在Tkinter Python中定义下拉列表的按下按钮
我用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 个回答
1
你要找的是“lambda”。你可以在命令调用中这样使用lambda:
contentMenu.add_command(label=btn, command = lambda btn=btn: buttonClicked(btn))
然后你需要创建一个叫做 buttonClicked
的方法,这个方法会接收一个参数,用来表示哪个按钮被按下了。下面是一个简单的例子:
def buttonClicked(btn):
print btn
不过,理想情况下,如果每个按钮的执行指令完全不同,那么每个按钮应该有自己的方法。你可以把按钮的列表改成一个包含(名称,方法)的元组。这通常是选择使用菜单按钮而不是选项菜单的原因。如果你只是对所有按钮调用同一个方法,那你可能要考虑换成选项菜单。