.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()
查看以下代码片段:
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()