如何在Python tkinter中创建数量可变的按钮?
我想用tkinter在Python3.8.2中编写一个文件浏览器。除了按钮,其他一切都正常工作,因为它们没有做它们应该做的事情 以下是一个例子:如何在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
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)
更多解释请参见