【发布时间】:2018-12-15 07:19:14
【问题描述】:
我使用 Tkinter 和 SQLite3 在 Python3 中制作了一个文本文件管理系统。每个用户的文件都存储在数据库中。当用户登录时,在主屏幕上,for 循环遍历文件名并为每个文件创建一个按钮。每个按钮都必须打开与其名称对应的文件。
问题是,所有的按钮打开的是最后一个按钮对应的文件,而不是它们对应的文件名。
为了更清楚,这是我的代码:
for i in viewdata:
doc=Button( mainframe, image=docimg, bd=0,cursor='hand1', command=lambda: openexistingfile(str(i[0])))
doc.place(x=cnt, y=70)
doc.image=docimg
Label(mainframe, text=str(i[0]), font='Times 12 italic', bg='white').place(x=cnt, y=130)
cnt+=120
print(str(i[0]))
假设用户有 3 个文件,sample1、sample2 和 sample3。所以在这里,viewdata = [(sample1, ), (sample2,), (sample3,)]。现在,将创建三个按钮,每个按钮打开一个文件。但是,由于某种原因,所有按钮都在打开 sample3。
最后一个打印语句以正确的格式正确打印文件名,这只是我遇到问题的按钮命令。
任何帮助将不胜感激。谢谢你。
【问题讨论】:
标签: python python-3.x tkinter tkinter-entry