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

2024-06-26 14:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个可变长度的列表,希望为列表中的每个条目创建一个复选框(使用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个复选框,但它们都被勾选或取消勾选在一起,并且enabledict中的值不会更改。如何解决?(我认为l不起作用,但如何使这一个变量?)


Tags: gtself列表字典tkinterenable计算机条目
2条回答

我只是想和大家分享我的例子,而不是字典:

from Tkinter import *

root = Tk()    

users = [['Anne', 'password1', ['friend1', 'friend2', 'friend3']], ['Bea', 'password2', ['friend1', 'friend2', 'friend3']], ['Chris', 'password1', ['friend1', 'friend2', 'friend3']]]

for x in range(len(users)):
    l = Checkbutton(root, text=users[x][0], variable=users[x])
    print "l = Checkbutton(root, text=" + str(users[x][0]) + ", variable=" + str(users[x])
    l.pack(anchor = 'w')

root.mainloop()

希望有帮助

传递给每个checkbutton的“variable”必须是Tkinter variable的一个实例-事实上,传递的只是值“0”,这会导致错误行为。

您可以在同一for循环上创建Tkinter.Variable实例您可以创建复选按钮-只需将代码更改为:

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

self.root.mainloop()

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

相关问题 更多 >