Python-Tkinter: Beenden der Ereignisverbreitung in Text-Widgets-Tags

Ich schreibe gerade einen Farbschema-Editor. Für die Vorschau des Schemas verwende ich ein Text-Widget, in das ich Text mit den entsprechenden Farb-Tags einfüge (die ich programmgesteuert generiere).

Was ich will, ist das folgende Verhalten:

Klicken Sie auf eine Stelle im Text-Widget, an der sich kein Text befindet: Ändern Sie die HintergrundfarbeKlicken Sie auf Text, der mit einem Tag eingefügt wurde: Ändern Sie die Tags in der entsprechenden Vordergrundfarbe

Hier ist mein Problem:

Wenn ich auf einen getaggten Text klicke, wird der Rückruf des Tags aufgerufen. So weit, ist es gut. Dann wird aber auch der Rückruf des Text-Widgets aufgerufen, obwohl ich in der Rückrufmethode der Tags "break" zurückgebe (was die weitere Ereignisbehandlung stoppen sollte).Wie kann ich das aufhalten?

Um dieses spezielle Problem zu veranschaulichen, habe ich dieses Arbeitsbeispiel geschrieben (für Python 2 und 3):

#!/usr/bin/env python

try:
    from Tkinter import *
    from tkMessageBox import showinfo
except ImportError:
    from tkinter import *
    from tkinter.messagebox import showinfo

def on_click(event, widget_origin='?'):
    showinfo('Click', '"{}"" clicked'.format(widget_origin))
    return 'break'

root = Tk()
text = Text(root)
text.pack()
text.insert(CURRENT, 'Some untagged text...\n')
text.bind('<Button-1>', lambda e, w='textwidget': on_click(e, w))
for i in range(5):
    tag_name = 'tag_{}'.format(i)
    text.tag_config(tag_name)
    text.tag_bind(tag_name, '<Button-1>',
        lambda e, w=tag_name: on_click(e, w))
    text.insert(CURRENT, tag_name + ' ', tag_name)
root.mainloop()

Jede Hilfe wird geschätzt!

Bearbeiten: Versuchte Python 2 auch.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage