def register_listener(event_cls):
def deco(func):
LISTENERS[event_cls].append(func)
return func
return deco
@register_listener(ButtonClickedEvent)
def on_click(event: ButtonClickedEvent):
pass
LISTENERS = defaultdict(list)
event = queue.get()
for listener in LISTENERS[event.__class__]:
listener(event)