Допустим под каждое событие должно что-то произойти.
Допустим событий 5:
[ 1, 2, 3, 4, 5 ]
И у каждого из событий есть функция которая меняет цвет фона.
Вопрос:
Как правильно привязать event'ы к тем функциям к которым они относятся, т.е когда наступает событие 3 нужно чтобы цвет окна стал красным а когда наступает событие 1 - белым ну и т.д...
Или можно добавь в класс кнопки список коллбеков и метод connect, у которого будет аргументом какой-нибудь callback и по нажатию кнопки пробегаем по этому списку и вызываем каждый колбек?
from collections import defaultdict
LISTENERS = defaultdict(list)
event = queue.get()
for listener in LISTENERS[event.__class__]:
listener(event)
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
@register_listener(ChangeValue)
def on_click(event: ChangeValue):
pass
@register_listener(SetSize)
def on_click(event: SetSize):
pass