我有一个可变长度的列表,想为列表中的每个条目创建一个复选框(使用 python TKinter)(每个条目对应一台机器,应该使用复选框打开或关闭 -> 更改字典中的值) .
print enable
{'ID1050': 0, 'ID1106': 0, 'ID1104': 0, 'ID1102': 0}
(例如,可以是任意长度)
现在是相关代码:
for machine in enable:
l = Checkbutton(self.root, text=machine, variable=enable[machine])
l.pack()
self.root.mainloop()
此代码生成 4 个复选框,但它们都被勾选或取消勾选,并且 enable
dict 中的值不会改变。怎么解决? (我认为 l
不工作,但如何使这个变量?)
原文由 Sebastian 发布,翻译遵循 CC BY-SA 4.0 许可协议
传递给每个复选按钮的“变量”必须是 Tkinter 变量的一个实例——事实上,传递的只是值“0”,这会导致错误行为。
您可以在创建检查按钮的相同 for 循环上创建 Tkinter.Variable 实例 - 只需将代码更改为:
然后,您可以使用其
get
方法检查每个复选框的状态,如enable["ID1050"].get()