import patterns import mywidgets import time class HelloFunctor(object): def __call__(self, observer): if observer.Subject.text == 'Hello World': observer.Subject.text = 'Goodbye World' else: observer.Subject.text = 'Hello World' class QuitFunctor(object): def __init__(self): self.done = False def __call__(self, observer): self.done = True factory = mywidgets.TkWidgetFactory() hello_button = factory.button(text='Hello World') quit_button = factory.button(text='Quit') factory.window().contents = [ hello_button, '\n', quit_button, ] quit = QuitFunctor() patterns.CallbackObserver(hello_button, HelloFunctor()) patterns.CallbackObserver(quit_button, quit) while not quit.done: time.sleep(.1) factory.do_quit() # FIXME: this seems out of place