Tkinter generiert und ruft ein virtuelles Ereignis zwischen verschiedenen Widgets auf

eim Schreiben einer einfachen GUI-App in tkinter bin ich auf ein kleines Problem gestoßen. Angenommen, ich habe ein benutzerdefiniertes Menü-Widget (abgeleitet von tk.Menu) und ein benutzerdefiniertes Canvas-Widget (abgeleitet von tk.Canvas).

Ich möchte ein Ereignis aus der Menü-Rückruffunktion generieren und es im Canvas-Widget aufrufen. Ich muss es so machen, weil ich in Zukunft mehr Widgets hinzufügen möchte, die auf die angeklickte Position im Menü reagieren sollen.

Ich habe versucht, es so zu machen:

benutzerdefiniertes Menü

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

custom canvas:

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

Wenn ich auf die Position im Menü klicke, wird der _handler-Rückruf ordnungsgemäß aufgerufen und das Ereignis <> wird generiert, der on_event-Rückruf wird jedoch nicht aufgerufen. Ich habe versucht, when = 'tail' -Parameter, self.update () usw. hinzuzufügen, aber ohne Ergebnis. Weiß jemand, wie es geht?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage