如何在Python tkinter中创建数量可变的按钮?

如何在Python tkinter中创建数量可变的按钮?,tkinter,python-3.8,Tkinter,Python 3.8,我想用tkinter在Python3.8.2中编写一个文件浏览器。除了按钮,其他一切都正常工作,因为它们没有做它们应该做的事情 以下是一个例子: import tkinter as tk buttonlist = ['button1', 'button2', 'button3'] Buttons = [] root = tk.Tk() for h, button in enumerate(buttonlist): Buttons.append(tk.Button(root, tex

我想用tkinter在Python3.8.2中编写一个文件浏览器。除了按钮,其他一切都正常工作,因为它们没有做它们应该做的事情

以下是一个例子:

import tkinter as tk

buttonlist = ['button1', 'button2', 'button3']
Buttons = []

root = tk.Tk()

for h, button in enumerate(buttonlist):
    Buttons.append(tk.Button(root, text=button, command = lambda : print(button)))
    Buttons[h].pack()

root.mainloop()
但我按哪个按钮并不重要,它总是打印
button3

如何解决此问题?

lambda将使用for循环中的最后一个值。您可以强制lambda使用按钮cretaion上的按钮值,方法是将其作为默认值提供:

lambda b=button: print(b)
更多解释请参见