A recurring problem in (not only) GUI programming are event cycles, i.e. the receiving of events oneself has triggered. These can quickly lead to event cycles, where change triggers change triggers change, until something gives out—usually the stack.
A particularly cheap way of breaking cycles are simple boolean flags:
class Foo(object):
listen = True
[...]


![Validate my RSS feed [Valid RSS]](http://shlomme.diotavelli.net/images/valid-rss.png)