我使用Python Tkinter的Menubutton创建了一个下拉列表,但我无法检测到按下了哪个按钮('button-1','button-2'或'button-3')
from Tkinter import *
widget = Frame()
widget.pack()
btnMenu = Menubutton(widget, text='Select action')
contentMenu = Menu(btnMenu)
btnMenu.config(menu=contentMenu)
btnMenu.pack()
btnList = ['button-1', 'button-2', 'button-3']
for btn in btnList:
contentMenu.add_command(label=btn, command=???)
mainloop()
我应该在字符串
中使用“command =”contentMenu.add_command(label=btn, command=???)
为了定义特定的按钮?谢谢!
答案 0 :(得分:1)
你要找的是lambda。您可以在命令调用中使用lambda,如下所示:
contentMenu.add_command(label=btn, command = lambda btn=btn: buttonClicked(btn))
然后创建一个名为buttonClicked
的方法,该方法将采用一个参数来反映按下了哪个按钮。这是一个最小的例子:
def buttonClicked(btn):
print btn
理想情况下,如果每个按钮具有完全不同的执行指令集,那么它们应该各自获得自己的方法,并且可能将列表更改为(名称,方法)的元组。这通常就是为什么你要使用menubutton而不是optionmenu的情况。如果您只是为所有这些方法调用相同的方法,那么您可能需要考虑切换到optionmenu。