【发布时间】:2017-05-10 22:13:26
【问题描述】:
我有四个单选按钮和 4 个值。我想要它,以便在选择选定的广播按钮时,该值将从输入框中输入的值中更改,但仅适用于选择的单个单选按钮,而其余的则与他们透彻的内容保持不变。
。目前在我的代码中,所有值都更改为输入框中输入的值。
from tkinter import*
class NumberValues:
def __init__(self, value):
self.value = value
class NumberGUI:
def __init__(self, parent):
self.numbers = [NumberValues(4000), NumberValues(4000), NumberValues(8000), NumberValues(8000)]
i_value = 0 #value given to radiobutton
#set up for show radio buttons
self.numChoice = IntVar() #instance for IntVar created
self.numChoice.set(0) #sets the initial selection
self.NumberList = []
for num in self.numbers: #for loop outputs show info
self.show_rb = Radiobutton(parent, variable = self.numChoice, value = i_value)
self.show_rb.grid(row = i_value, column = 0)
self.num_label = Label(parent, text = int(num.value))
self.num_label.grid(row = i_value, column = 1)
self.NumberList.append(self.num_label)
i_value += 1
self.quantity_entry = Entry(parent, width = 15)
self.quantity_entry.grid(row = i_value + 1, column = 0)
self.confirmOrder_btn = Button(parent, text = "Enter Number", command = self.calculate_num)
self.confirmOrder_btn.grid(row = i_value + 1, column = 1)
def calculate_num(self):
showNumberList = []
placement = int(self.numChoice.get())
for i in range(len(self.numbers)):
number = int(self.quantity_entry.get())
self.numbers[i].value = self.numbers[i].value - number
avaiable = int(self.numbers[i].value)
showNumberList.append(avaiable)
self.NumberList[i].configure(text = showNumberList[i])
# main routine
if __name__ == "__main__":
root = Tk()
numberCaluclating = NumberGUI(root)
root.mainloop()
如图所示,我创建了一个放置变量,指示应该在我的列表中更改的值的位置。我想以某种方式使用它,但我尝试过的仍然将它们全部更改为不正确的值。
这里不需要列表,我只是认为这是一种将所有值保持在一起并将它们配置在一起的可能方法。
那么,如何选择只有该值会更改该值的单选按钮时,选择其他值时会更改其广播按钮?
【问题讨论】:
-
一种方法是在输入数字后检查单选按钮的状态,并仅更新相应的标签。但为了做到这一点,您需要保留对单选按钮的引用。
标签: python tkinter radio-button