O Tkinter gera e invoca eventos virtuais entre diferentes widgets

durante a escrita de um aplicativo GUI simples no tkinter, encontrei um pequeno problema. Digamos que eu tenha um widget de menu personalizado (derivado de tk.Menu) e um widget de tela personalizado (derivado de tk.Canvas).

Gostaria de gerar um evento a partir da função de retorno de chamada do menu e invocá-lo no widget de tela. Eu preciso fazer dessa maneira, porque no futuro eu gostaria de adicionar mais widgets que devem reagir à posição clicada no menu.

Eu tentei fazer dessa maneira:

menu customizado:

class MainMenu(tk.Menu):

    def __init__(self, parent):
       tk.Menu.__init__(self, parent)
       self.add_comand(label='foo', self._handler)
       return

    def _handler(self, *args):
        print('handling menu')       
        self.event_generate('<<abc>>')
        return

tela personalizada:

class CustomCanvas(tk.Canvas): 
    def __init__(self, parent, name=''):
        tk.Canvas.__init__(self, parent)
        self.bind('<<abc>>', self.on_event)
        return

    def on_event(self, event):
       print(event)
       return

Quando clico na posição no menu, o retorno de chamada _handler é chamado corretamente e o evento <> é gerado, mas o retorno de chamada on_event não é chamado. Eu tentei adicionar quando o parâmetro = 'tail', adicione self.update () etc., mas sem nenhum resultado. Alguém sabe como fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion