EJIO.ctk_extender.event package

Inheritance diagram of EJIO.ctk_extender.event.base.Event, EJIO.ctk_extender.event.controller.EventController, EJIO.ctk_extender.event.listener.EventListener

Submodules

EJIO.ctk_extender.event.base module

class EJIO.ctk_extender.event.base.Event(sender: Any = None)[исходный код]

Базовые классы: object

Базовый абстрактный класс для всех событий. Каждое конкретное событие должно наследоваться от этого класса.

property sender: Any

Возвращает отправителя события.

property sender_thread_name: str

Возвращает имя потока, отправившего событие.

property timestamp: float

Возвращает UNIX-время создания события.

EJIO.ctk_extender.event.controller module

class EJIO.ctk_extender.event.controller.EventController(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass

Потокобезопасный контроллер событий. Поддерживает строгую фильтрацию событий по отправителю (sender) или кастомному предикату. Вызывает обработчики строго в главном UI-потоке customtkinter.

classmethod emit(event: Event) → None[исходный код]

Потокобезопасно отправляет объект события в очередь.

Параметры:

event – Событие которое нужно отправить в очередь.

classmethod initialize(root_widget: <MagicMock name = 'mock.CTk' id='140416957096608'>, polling_interval_ms: int = 16) → None[исходный код]

Инициализирует контроллер и запускает бесконечный цикл опроса очереди.

Параметры:
  • root_widget – Корневой виджет ctk приложения.

  • polling_interval_ms – Интервал между обработкой событий.

classmethod subscribe(event_type: type[E], callback: Callable[[E], None], *, sender: Any | None = None, predicate: Callable[[E], bool] | None = None) → None[исходный код]

Подписывает обработчик на определенный класс события с возможностью фильтрации.

Параметры:
  • event_type – Класс события (наследник Event).

  • callback – Функция обратного вызова, принимающая экземпляр этого события.

  • sender – Опционально: фильтровать события строго от этого объекта-отправителя.

  • predicate – Опционально: кастомная функция-фильтр, возвращающая True/False.

classmethod unsubscribe(event_type: type[E], callback: Callable[[E], None]) → None[исходный код]

Отписывает обработчик от указанного класса события.

Параметры:
  • event_type – Класс события (наследник Event).

  • callback – Функция обратного вызова, привязанная к этому событию.

EJIO.ctk_extender.event.listener module

class EJIO.ctk_extender.event.listener.EventListener(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass

Вспомогательный класс-миксин или менеджер, автоматически связывающий декорированные методы объекта с глобальным EventController.

classmethod register_listeners(instance: Any) → None[исходный код]

Сканирует переданный объект на наличие методов с декоратором @on_event и автоматически подписывает их в EventController с учетом динамических отправителей.

Параметры:

instance: – Объект события которого нужно зарегестрировать.

classmethod unregister_listeners(instance: Any) → None[исходный код]

Автоматически отписывает все методы объекта от EventController.

Параметры:

instance – Объект события которого нужно отписать.

EJIO.ctk_extender.event.listener.on_event(event_type: type[E], *, sender_attr: str | None = None, predicate: Callable[[E], bool] | None = None) → Callable[[Callable[[Any, E], None]], Callable[[Any, E], None]][исходный код]

Декоратор для декларативной подписки методов класса на события. Полноценно оборачивает функцию, сохраняя метаданные для EventListener.

Параметры:
  • event_type – Класс отслеживаемого события.

  • sender_attr – Опционально: строка с именем атрибута экземпляра класса, который является отправителем (например, „state“ или „table“).

  • predicate – Опционально: функция-фильтр условий.

Результат:

Функцию, обарачивающую указанный коллбэк для события.

Module contents

class EJIO.ctk_extender.event.Event(sender: Any = None)[исходный код]

Базовые классы: object

Базовый абстрактный класс для всех событий. Каждое конкретное событие должно наследоваться от этого класса.

property sender: Any

Возвращает отправителя события.

property sender_thread_name: str

Возвращает имя потока, отправившего событие.

property timestamp: float

Возвращает UNIX-время создания события.

class EJIO.ctk_extender.event.EventController(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass

Потокобезопасный контроллер событий. Поддерживает строгую фильтрацию событий по отправителю (sender) или кастомному предикату. Вызывает обработчики строго в главном UI-потоке customtkinter.

classmethod emit(event: Event) → None[исходный код]

Потокобезопасно отправляет объект события в очередь.

Параметры:

event – Событие которое нужно отправить в очередь.

classmethod initialize(root_widget: <MagicMock name = 'mock.CTk' id='140416957096608'>, polling_interval_ms: int = 16) → None[исходный код]

Инициализирует контроллер и запускает бесконечный цикл опроса очереди.

Параметры:
  • root_widget – Корневой виджет ctk приложения.

  • polling_interval_ms – Интервал между обработкой событий.

classmethod subscribe(event_type: type[E], callback: Callable[[E], None], *, sender: Any | None = None, predicate: Callable[[E], bool] | None = None) → None[исходный код]

Подписывает обработчик на определенный класс события с возможностью фильтрации.

Параметры:
  • event_type – Класс события (наследник Event).

  • callback – Функция обратного вызова, принимающая экземпляр этого события.

  • sender – Опционально: фильтровать события строго от этого объекта-отправителя.

  • predicate – Опционально: кастомная функция-фильтр, возвращающая True/False.

classmethod unsubscribe(event_type: type[E], callback: Callable[[E], None]) → None[исходный код]

Отписывает обработчик от указанного класса события.

Параметры:
  • event_type – Класс события (наследник Event).

  • callback – Функция обратного вызова, привязанная к этому событию.

class EJIO.ctk_extender.event.EventListener(*args: tuple[object, ...], **kwargs: dict[str, object])[исходный код]

Базовые классы: StaticClass

Вспомогательный класс-миксин или менеджер, автоматически связывающий декорированные методы объекта с глобальным EventController.

classmethod register_listeners(instance: Any) → None[исходный код]

Сканирует переданный объект на наличие методов с декоратором @on_event и автоматически подписывает их в EventController с учетом динамических отправителей.

Параметры:

instance: – Объект события которого нужно зарегестрировать.

classmethod unregister_listeners(instance: Any) → None[исходный код]

Автоматически отписывает все методы объекта от EventController.

Параметры:

instance – Объект события которого нужно отписать.

EJIO.ctk_extender.event.on_event(event_type: type[E], *, sender_attr: str | None = None, predicate: Callable[[E], bool] | None = None) → Callable[[Callable[[Any, E], None]], Callable[[Any, E], None]][исходный код]

Декоратор для декларативной подписки методов класса на события. Полноценно оборачивает функцию, сохраняя метаданные для EventListener.

Параметры:
  • event_type – Класс отслеживаемого события.

  • sender_attr – Опционально: строка с именем атрибута экземпляра класса, который является отправителем (например, „state“ или „table“).

  • predicate – Опционально: функция-фильтр условий.

Результат:

Функцию, обарачивающую указанный коллбэк для события.