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