@pgamesorg

Как правильно отлавливать активные событие в потоке?

Допустим под каждое событие должно что-то произойти.

Допустим событий 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
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы