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)

谢谢:)