如何在点击按钮时将文件名打印到控制台?
问题描述:
在下面的示例中,按钮是根据特定目录中的文件创建的。我添加了一个打印功能的按钮。我想要做的是,当我点击每个按钮时,每个按钮都应该打印相关文件。但根据下面的代码,当我点击每个按钮,他们打印相同的文件名,这是文件列表的最后一项。你能帮我看看这些代码中缺少什么吗?如何在点击按钮时将文件名打印到控制台?
from tkinter import *
import os
class Application:
def __init__(self):
self.window = Tk()
self.frame = Frame()
self.frame.grid(row=0, column=0)
self.widgets()
self.mainloop = self.window.mainloop()
def widgets(self):
files = self.path_operations()
for i in range(len(files)):
button = Button(self.frame, text="button{}".format(i))
button.grid(row=0, column=i)
button.configure(command=lambda: print(files[i]))
@staticmethod
def path_operations():
path = "D:\TCK\\Notlar\İş Başvurusu Belgeleri"
file_list = [i for i in os.listdir(path) if os.path.isfile(os.path.join(path, i))]
return file_list
a = Application()
答
程序需要以某种方式知道打印什么文件,但i
共享和变化。这里有一种技术:
def widgets(self):
files = self.path_operations()
for i in range(len(files)):
button = Button(self.frame, text="button{}".format(i))
button.grid(row=0, column=i)
button.configure(command=self.make_print(files[i]))
@staticmethod
def make_print(file):
def local_print():
print(file)
return local_print
+0
这个技巧解决了我的问题。非常感谢你。 –
哦,谢谢你,我会看看那个页面。 –