如何在点击按钮时将文件名打印到控制台?

问题描述:

在下面的示例中,按钮是根据特定目录中的文件创建的。我添加了一个打印功能的按钮。我想要做的是,当我点击每个按钮时,每个按钮都应该打印相关文件。但根据下面的代码,当我点击每个按钮,他们打印相同的文件名,这是文件列表的最后一项。你能帮我看看这些代码中缺少什么吗?如何在点击按钮时将文件名打印到控制台?

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() 
+0

哦,谢谢你,我会看看那个页面。 –

程序需要以某种方式知道打印什么文件,但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

这个技巧解决了我的问题。非常感谢你。 –