【发布时间】:2019-12-23 21:49:51
【问题描述】:
我在不到 3 周前才开始编写代码(在 Lynda 上过一堂课),现在正在开发一个允许用户勾选/取消勾选列表的 GUI。我设法完成了它,但解决方法效率低下(有人提醒我)。
我所做的基本上是为每个复选框调用一个变量并将复选框状态插入其中。因此,如果列表中有 100 个复选框,我将需要创建 100 个变量。下面是我写的工作代码。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
var1t1 = tk.IntVar()
var2t1 = tk.IntVar()
var3t1 = tk.IntVar()
var_name = []
root.title("Testing Checkbox")
root.geometry("200x150")
def boxstates_t1():
var_name = [var1t1.get(), var2t1.get(), var3t1.get()]
print(var_name)
# -----------------Checkbox-----------------
labelName = tk.Label(root, text = "Name")
labelName.pack(anchor = tk.W)
check1_t1 = ttk.Checkbutton(root, text = "Mike", variable = var1t1)
check1_t1.pack(anchor = tk.W)
check2_t1 = ttk.Checkbutton(root, text = "Harry", variable = var2t1)
check2_t1.pack(anchor = tk.W)
check3_t1 = ttk.Checkbutton(root, text = "Siti", variable = var3t1)
check3_t1.pack(anchor = tk.W)
# -----------------Button-----------------
btn2 = ttk.Button(root, text="Show", command = boxstates_t1)
btn2.pack(side=tk.RIGHT)
root.mainloop()
然后我四处搜索,发现很少有代码让我使用 for 循环来打印列表。我初始化 var_name = [] 以便它从列表中捕获每个复选框状态。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
var1 = tk.IntVar()
var_name = []
root.title("Testing Checkbox")
root.geometry("200x150")
def boxstates():
var_name = var1.get()
print(var_name)
# ------------------Chekbox-------------
name1 = ["Mike", "Harry", "Siti"]
labelName = tk.Label(root, text = "Name")
labelName.pack(anchor = tk.W)
for checkboxname in name1:
check1_t1 = ttk.Checkbutton(root, text=checkboxname, variable=var1)
check1_t1.pack(anchor = tk.W)
# ------------------Button-------------
btn2 = ttk.Button(root, text="Show", command = boxstates)
btn2.pack(side=tk.RIGHT)
root.mainloop()
但我无法独立勾选复选框,打印输出结果也像在单个变量中一样返回。我做错数组var_name = []了吗?我现在迷路了,不知道下一步该去哪里。
非常感谢任何建议。
【问题讨论】: