Tkinter OptionMenu 中的下拉按钮
Drop down button in Tkinter OptionMenu
我需要在单击下拉列表按钮时更新我的列表:
如何将按钮绑定到某些功能?
您要找的活动是Activate
:
optmenu.bind('<Activate>', onactivate)
您的 onactivate
回调接受一个 Activate
事件,但您可能不关心它的属性。
你的后半部分问题是如何更新菜单。为此,您可以使用 menu
属性,它是 Menu
object, on which you can call delete
and add
以及您想要的任何其他属性。所以,例如:
def onactivate(evt):
menu = optmenu['menu']
menu.delete(0, tkinter.END)
menu.add_command(label='new choice 1')
menu.add_command(label='new choice 2')
menu.add_separator()
menu.add_command(label='new choice 3')
optvar.set('new choice 1')
(但是,请注意,虽然 set
在末尾添加 var 确实会导致它成为新的默认选择,并且确实会出现在菜单 header 中,但它不会如果光标不在任何菜单项上,则突出显示所选项目。如果你想要那样,这很棘手,所以希望你不要。)
'<Activate>'
没有用,但我发现 '<Button-1>'
现在可以用了。
optmenu.bind('<Button-1>', onactivate)
谢谢:)
我需要在单击下拉列表按钮时更新我的列表:
如何将按钮绑定到某些功能?
您要找的活动是Activate
:
optmenu.bind('<Activate>', onactivate)
您的 onactivate
回调接受一个 Activate
事件,但您可能不关心它的属性。
你的后半部分问题是如何更新菜单。为此,您可以使用 menu
属性,它是 Menu
object, on which you can call delete
and add
以及您想要的任何其他属性。所以,例如:
def onactivate(evt):
menu = optmenu['menu']
menu.delete(0, tkinter.END)
menu.add_command(label='new choice 1')
menu.add_command(label='new choice 2')
menu.add_separator()
menu.add_command(label='new choice 3')
optvar.set('new choice 1')
(但是,请注意,虽然 set
在末尾添加 var 确实会导致它成为新的默认选择,并且确实会出现在菜单 header 中,但它不会如果光标不在任何菜单项上,则突出显示所选项目。如果你想要那样,这很棘手,所以希望你不要。)
'<Activate>'
没有用,但我发现 '<Button-1>'
现在可以用了。
optmenu.bind('<Button-1>', onactivate)
谢谢:)