使用python 3列出从文件夹到tkinter窗口的文件名

时间:2015-05-08 15:37:42

标签: python-3.x tkinter

我有以下问题: 我想列出文件夹中的所有文件名到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。

提前谢谢你!

1 个答案:

答案 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之类的内容。