.get() 无法获取复选框的结果

.get() not able to get results of checkboxes

查看以下代码片段:

def choose_ID():
    import ttk
    global single_ID
    id = BooleanVar()
    toplevel = Toplevel()
    label1 = Label(toplevel, text = "Choose a User ID.", width = 40).pack(anchor=W, pady=5)
    for items in range(len(single_ID)):
        id = Checkbutton(toplevel, text=single_ID[items], variable=single_ID[items])
        id.pack(anchor=W, padx=5)
    single_run_but = Button(toplevel, text = "Run", width=10, height=1, command=run_command).pack(anchor=S, pady=5)
    id.get()

它的目的是打开一个弹出窗口 window,其中包含一些复选框(数字可以是 1 到 100 之间的任何值),其中包含从脚本前面传递给函数的用户 ID。

问题出在最后的 id.get() 行。运行时出错,显示 "Checkbutton instance has no attribute 'get'"

我需要更改什么才能注意到哪些复选框已被选中(可能只有一个或多个复选框)?

非常感谢, 克里斯

你最后一次设置id是在for循环中。在此期间,您将 id 设置为复选按钮,它没有 get() 方法。

您要做的是在通过 variable 属性与复选按钮关联的 IntVar 上使用 get() 方法。您可以在列表中保留对这些变量的引用。我做了一个小例子,说明如何动态创建复选按钮并仍然能够获取它们的值。

from Tkinter import *

def run_command():
    selected_ids = []
    for i, id_var in enumerate(id_var_list):
        if id_var.get():
            selected_ids.append(id_list[i])
    print selected_ids

root = Tk()
Label(root, text = "Choose a User ID.", width = 40).pack(anchor=W, pady=5)

id_list = ['ID1', 'ID2', 'ID100']
id_checkbutton_list = []
id_var_list = []

for item in id_list:
    id_var = IntVar()
    id_checkbutton = Checkbutton(root, text=item, variable=id_var)
    id_checkbutton.pack(anchor=W, padx=5)

    id_var_list.append(id_var)
    id_checkbutton_list.append(id_checkbutton)

Button(root, text = "Run", width=10, height=1, command=run_command).pack(anchor=S, pady=5)

root.mainloop()