在Tkinter Python中定义下拉列表的按下按钮

时间:2014-09-03 18:59:45

标签: python button tkinter

我使用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=???)

为了定义特定的按钮?谢谢!

1 个答案:

答案 0 :(得分:1)

你要找的是lambda。您可以在命令调用中使用lambda,如下所示:

contentMenu.add_command(label=btn, command = lambda btn=btn: buttonClicked(btn))

然后创建一个名为buttonClicked的方法,该方法将采用一个参数来反映按下了哪个按钮。这是一个最小的例子:

def buttonClicked(btn):
    print btn

理想情况下,如果每个按钮具有完全不同的执行指令集,那么它们应该各自获得自己的方法,并且可能将列表更改为(名称,方法)的元组。这通常就是为什么你要使用menubutton而不是optionmenu的情况。如果您只是为所有这些方法调用相同的方法,那么您可能需要考虑切换到optionmenu。