如何在 Python tkinter 中制作可变数量的按钮?

How to make a variable number of buttons in Python tkinter?

我想在 Python 3.8.2 中使用 tkinter 编写一个文件浏览器。除了按钮,其他一切都很好,因为它们只是没有做它们应该做的事。

这是一个例子:

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-loop 中的最后一个值。您可以通过提供默认值来强制 lambda 在创建按钮时使用按钮的值:

lambda b=button: print(b)

更多解释见