如何在 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)
更多解释见
我想在 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)
更多解释见