Кнопка выпадающего меню в Tkinter OptionMenu - PullRequest
0 голосов
/ 01 июня 2018

Мне нужно обновить свой список, когда я нажимаю кнопку для раскрывающегося списка:

enter image description here

Как я могу привязать кнопку к какой-либо функции?

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

'<Activate>' не работал, но я нашел '<Button-1>' и теперь он работает.

optmenu.bind('<Button-1>', onactivate)

Спасибо:)

0 голосов
/ 01 июня 2018

Событие, которое вы ищете: Activate:

optmenu.bind('<Activate>', onactivate)

Ваш onactivate обратный вызов принимает событие Activate, но вы, вероятно, не заботитесь оего атрибуты.

Вторая половина вашей проблемы - как обновить меню.Для этого вы используете атрибут menu, который является Menu объектом, для которого вы можете вызывать delete и 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 в конце, она становится новым выбором по умолчанию и отображается в заголовке меню, онане вызывает выделения выделенного элемента, если курсор не находится над каким-либо из пунктов меню. Если вы этого хотите, это сложно, так что, надеюсь, вы этого не сделаете.)

...