如何在python tkinter中的for循环中从列表创建多个复选框

Seb*_*ian 8 python checkbox for-loop tkinter

我有一个可变长度列表,并希望为列表中的每个条目创建一个复选框(使用python TKinter)(每个条目对应一个应该使用复选框打开或关闭的机器 - >更改字典中的值) .

print enable
{'ID1050': 0, 'ID1106': 0, 'ID1104': 0, 'ID1102': 0}
Run Code Online (Sandbox Code Playgroud)

(例如,可以是任何长度)

现在相关代码:

for machine in enable:
    l = Checkbutton(self.root, text=machine, variable=enable[machine])
    l.pack()
self.root.mainloop()
Run Code Online (Sandbox Code Playgroud)

此代码生成4个复选框,但它们全部勾选或未勾选,并且enabledict中的值不会更改.怎么解决?(我认为这l不起作用,但如何使这个变量?)

jsb*_*eno 16

传递给每个checkbutton的"变量"必须是Tkinter变量的实例 - 实际上,它只是传递的值"0",这会导致错误行为.

你可以创建Tkinter.Variable实例,同时为你创建检查按钮的循环 - 只需将你的代码更改为:

for machine in enable:
    enable[machine] = Variable()
    l = Checkbutton(self.root, text=machine, variable=enable[machine])
    l.pack()

self.root.mainloop()
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用其get方法检查每个复选框的状态,如下所示 enable["ID1050"].get()