Меню Tkinter - обратный вызов каскадного заголовка - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю контекстное меню. У меня есть каскад (подменю) в главном меню правой кнопки мыши. Я хочу, чтобы заголовок каскада , который отображается как элемент в главном меню, также запускал команду (обратный вызов). Это не возможно? В следующем фрагменте я попытался зарегистрировать обратный вызов двумя разными способами, но они не сработали.

import tkinter

window = tkinter.Tk()
frame = tkinter.Frame(window)
frame.grid(row=0, column=0)
text = tkinter.Label(frame, text='Right Click Here')
text.grid(row=0, column=0)

def openPopupMenu(event, popupMenu):
    try:
        popupMenu.tk_popup(event.x_root, event.y_root, 0)
    finally:
        popupMenu.grab_release()

# MAIN MENU BASE
popupMenu = tkinter.Menu(frame, tearoff=0)

# FIRST ITEM
popupMenu.add_command(label='Print 1', command=lambda: print(1))

# CASCADE BASE
optionsMenu = tkinter.Menu(popupMenu, tearoff=0)

# CASCADE ITEMS
optionsMenu.add_command(label='Print A', command=lambda: print('A'))
optionsMenu.add_command(label='Print B', command=lambda: print('B'))
optionsMenu.add_command(label='Print C', command=lambda: print('C'))

# ADD CASCADE TO MAIN MENU
# Trying to get the cascade header to run command:
popupMenu.add_cascade(label='Print ABC', menu=optionsMenu, command=lambda: print('ABC'))
optionsMenu.bind('<Button-1>', lambda: print('ABC'))


text.bind('<Button-3>', lambda event: openPopupMenu(event, popupMenu))
window.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...