Se stai costruendo il tuo sistema, sarebbe saggio studiare come il toolkit tk gestisce i collegamenti. Associa un elenco di tag (o bindtags) per il widget eAch. Quando un evento entra in un widget, la biblioteca ottiene l'elenco dei tag e cerca e applica ogni legame in ordine.
Di default l'ordine è più specifico (es .: il widget stesso) al meno specifico (es: la finestra più in alto). La bellezza del sistema è che puoi definire qualsiasi ordine tu desideri. Il 98% delle volte l'ordine predefinito è quello che desideri, ma a volte hai bisogno di qualcosa di diverso.
L'altra caratteristica di questo sistema è che ogni associazione può scegliere di avere o meno la bolla dell'evento. Se un gestore desidera il controllo completo, può gestire l'evento e quindi interrompere la catena. Oppure, può fare ciò che deve fare, quindi lasciare che gli altri handler abbiano il loro turno.
Non ho mai lavorato con un metodo di gestione degli eventi più potente, flessibile e semplice.
Oh, e non vi è alcuna limitazione che i tag debbano rappresentare oggetti visibili, o addirittura oggetti. Puoi avere tag che rappresentano le astrazioni (ad esempio, per impostazione predefinita ogni widget include il tag "all", il che significa che puoi associare a "tutti" e verrà attivato indipendentemente dal luogo in cui si verifica l'evento.