使用列表的Checkbutton状态(tkinter python)

时间:2018-07-06 17:16:43

标签: python list tkinter status

我想通过“ for”功能获取所有已定义复选按钮的状态。 我有四个复选按钮,输出为(关闭,关闭,关闭,关闭):

[0, 0, 0, 0]

但是我需要举个例子(关闭,打开,打开,关闭):

[0, 1, 1, 0]

似乎下面的代码仅在最后一个“ D”检查按钮上保留状态,并追加到“ buttons_status”列表中。

有人知道如何获取所有chcekbutton的状态吗? 预先感谢。

这是一个代码:

from tkinter import *

names = ['A','B','C','D']
buttons_status = []

root = Tk()
for x in range(0,len(names)):
    checkbutton_input = IntVar()
    checkbutton = Checkbutton(root, text=str(names[x]),
    variable=checkbutton_input)
    checkbutton.grid(row=3, column=x)
    status = checkbutton_input.get()
    buttons_status.append(status)
root.mainloop()

print(buttons_status)

1 个答案:

答案 0 :(得分:1)

您需要将实际的IntVar添加到列表中,并在想要查看状态时调用get方法。我们通常会在函数中加入类似的功能:

from tkinter import *

def get_all():
    return [x.get() for x in buttons_status]

names = ['A','B','C','D']
buttons_status = []

root = Tk()
for x in range(0,len(names)):
    checkbutton_input = IntVar()
    checkbutton = Checkbutton(root, text=str(names[x]), variable=checkbutton_input)
    checkbutton.grid(row=3, column=x)
    buttons_status.append(checkbutton_input)
root.mainloop()

print(get_all())

也就是说,这确实听起来像您需要的是一个子类。您的总体目标是什么?