答案 0 :(得分:0)
您正在寻找的事件是Activate
:
optmenu.bind('<Activate>', onactivate)
您的onactivate
回调需要Activate
次回复,但您可能并不关心其属性。
问题的后半部分是如何更新菜单。要执行此操作,请使用menu
属性,该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')
属性是Menu
对象,您可以在其中调用delete
和add
以及您想要的任何其他内容。所以,例如:
set
(但请注意,虽然最后{{1}}将var变为新的默认选择,并且确实显示在菜单标题中,但它不会导致所选项目成为新的默认选择如果光标没有超过任何菜单项,则突出显示。如果你想要它,那很棘手,所以希望你没有。)
答案 1 :(得分:0)
'<Activate>'
没有用,但我找到了'<Button-1>'
,现在可以了。
optmenu.bind('<Button-1>', onactivate)
谢谢:)