【发布时间】:2016-12-25 05:30:45
【问题描述】:
我正在尝试使用 Tkinter 做一些事情作为练习。 在我的示例应用程序中,我希望用户从下拉列表中选择一个选项。基于此选择,我想填充单选按钮列表。我创建了一个要填充到下拉列表中的值列表和一个单选按钮字典。请检查代码。
从图片中可以看出。第一个窗口运行良好。二也。然而,第三个窗口并不完全正确。选项“410”仍然存在。我在不关闭应用程序的情况下进行后续选择。
我想我可能没有在正确的位置声明变量。如果有人可以查看代码并进行纠正,那将非常有帮助。
代码:
from Tkinter import *
import ttk
class App(Frame):
def __init__(self,parent):
Frame.__init__(self)
self.parent = parent
self.v = IntVar()
#self.radio_value = []
#self.i = 0
self.GUI()
def GUI(self):
self.master.title('Example')
self.pack(fill = BOTH, expand = 1)
self.options = ['a1','a2','a3','a4','a5']
self.box_value = StringVar()
self.box = ttk.Combobox( self, textvariable=self.box_value)
self.box.bind("<<ComboboxSelected>>", self.set_Radio)
self.box['values'] = self.options
self.box.current(0)
self.box.grid(row = 0, column = 0 )
self.choices = {'a1':['30', '70', '140', '410'], 'a2': ['a', 'b', 'c'], 'a3': ['x', 'y', 'z'], 'a4':['p', 'q', 'r'], 'a5': ['l', 'm', 'n']}
def set_Radio(self,parent):
i = 0
radio_value = []
if self.box_value.get() in self.choices.keys():
radio_value = self.choices[self.box_value.get()]
print radio_value
for t in radio_value:
i = i+1
b = Radiobutton(self, text=t, variable=self.v, value=t)
b.grid(row = i, column = 0)
def main():
root = Tk()
root.geometry('250x250')
app1= App(root)
root.mainloop()
if __name__ == '__main__':
main()
【问题讨论】:
-
删除旧的,重新创建。
标签: python-2.7 tkinter radio-button