我有一个接收列表的函数,并为此列表中的每个元素创建Checkbutton
。这是一种菜单。但是当我调用此函数时,每个Checkbutton
都已经过检查,如何修复它?
def ask_event(args):
root = tk.Tk()
eventToReturn = tk.StringVar(root)
for i,arg in enumerate(args):
tk.Checkbutton(root, text = arg, onvalue = arg, variable = eventToReturn).grid(row = i, column = 1)
tk.Button(root, text = "Confirm", command = root.quit).grid()
root.mainloop()
root.destroy()
value = eventToReturn.get()
return value
答案 0 :(得分:1)
tkinter checkbutton有3种状态:
默认情况下,3个状态对应于这3个值:
(可以使用onvalue
和offvalue
参数更改这些值,请参阅the docs。)
这解释了为什么默认情况下会检查您的检查按钮:新StringVar
的值是空字符串,它对应于特殊的第3状态。
要将checkbutton的状态设置为“unchecked”,您必须将变量设置为offvalue
(默认值为0):
eventToReturn = tk.StringVar(root)
eventToReturn.set('0')
或者,您可以使用BooleanVar
或IntVar
,默认设置为0:
eventToReturn = tk.IntVar()