我有以下问题: 我想列出文件夹中的所有文件名到tkinter窗口+每个文件名附近的复选框(带有唯一变量)。 到目前为止我有这个:
import tkinter as tk
def gui():
master=tk.Tk()
files=next(os.walk('forms'))[2]
i=1
for f in files:
'unique var name??'=tk.IntVar()
tk.Checkbutton(master, text=f, variable='unique var name??').grid(row=i)
master.mainloop()
gui()
此代码有效,但只返回相应文件夹中的最后一个文件名+ tkinter窗口中的复选框。我不知道如何为每个复选框定义一个唯一的tk.IntVar()变量,以及如何使master.mainloop()窗口列出所有文件名。我在win 7上使用python 3.4。
提前谢谢你!
答案 0 :(得分:2)
您不需要唯一的变量名称,您只需要唯一的变量。列表或字典效果很好。由于您将变量与文件名相关联,因此将文件名作为键的字典有意义:
vars = {}
for f in files:
var = tk.IntVar()
tk.Checkbutton(master, text=f, variable=var).grid(row=i)
vars[f] = var
稍后,要打印所有变量的值,只需遍历字典:
for (name, var) in vars.iteritems():
print(name, var.get())
BTW:你的代码中有一个错误,因为你永远不会增加行号。您最终将所有按钮堆叠在同一行中。您需要在循环中添加i += 1
之类的内容。