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

2024-09-26 22:51:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pythontkinter中的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=”应该使用什么

^{pr2}$

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


Tags: fromimport列表tkinterbuttonwidget按钮command
1条回答
网友
1楼 · 发布于 2024-09-26 22:51:08

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

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

然后创建一个名为buttonClicked的方法,该方法将接受一个参数,该参数将反映已按下的按钮。下面是一个最简单的示例:

^{pr2}$

但理想情况下,如果每个按钮都有一组完全不同的执行指令,那么每个按钮都应该有自己的方法,也许您可以将列表更改为(name,method)的元组。这就是为什么要使用menubutton而不是optionmenu的原因。如果您只是简单地为它们调用相同的方法,那么您可能需要考虑切换到optionmenu。在

相关问题 更多 >

    热门问题