Python tkinter: detener la propagación de eventos en etiquetas de widgets de texto

Actualmente estoy escribiendo un editor de esquema de color. Para la vista previa del esquema, uso un widget de texto, donde inserto el texto con las etiquetas de color correspondientes (que genero mediante programación).

Lo que quiero es el siguiente comportamiento:

haga clic en cualquier parte del widget de texto donde no hay texto: cambie el color de fondohaga clic en el texto insertado con una etiqueta: cambie las etiquetas correspondientes al color de primer plano

Ahora aquí está mi problema:

Cuando hago clic en un texto etiquetado, se llama a la devolución de llamada de la etiqueta. Hasta ahora tan bueno. Pero también se llama a la devolución de llamada del widget de texto, aunque devuelvo "break" en el método de devolución de llamada de etiquetas (lo que debería detener el manejo de eventos).¿Cómo puedo detener esto?

Para ilustrar este problema específico, escribí este ejemplo funcional (para Python 2 y 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()

Cualquier ayuda es apreciada!

Edición: Tried Python 2 también.

Respuestas a la pregunta(2)

Su respuesta a la pregunta