Используем PyDispatcher вместо Pubsub — wxPython #8

В прошлой статье про Pubsub мы рассмотрели, как использовать встроенную в wxPython версию Pubsub для того, чтобы отправлять сообщения внутри приложения. Сегодня же мы научимся альтернативному методу, который называется PyDispatcher. Он ведёт себя также, как и модуль Pubsub. Давайте разберёмся!

Приступаем к работе

Используем PyDispatcher вместо Pubsub - wxPython #8

Прежде всего вам нужно скачать PyDispatcher и установить его на вашу систему. Если у вас установлен pip, вы можете ввести следующую команду:

В обратном случае, перейдите на страницу продукта в интернете и скачайте его оттуда. Одним из преимуществ Pubsub является то, что он уже включён в стандартный дистрибутив wxPython. Как бы то ни было, если вы хотите использовать Pubsub ОТДЕЛЬНО от wxPython, вам нужно будет скачать его самостоятельную базу кода и установить её. Среди программистов много тех, кто не хочет загружать больше дополнительных элементов, чем им нужно.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

В любом случае, теперь у нас есть PyDispatcher, так что давайте импортируем код из Pubsub и посмотрим, что из этого выйдет!

Давайте сделаем небольшой перерыв. Сначала мы импортируем dispatcher из пакета pydispatch. Затем мы редактируем метод onSendAndClose для OtherFrame, таким образом, чтобы он отправлял ваши сообщения панельным слушателям. Вот первый фрагмент, который нам нужно изменить:

Теперь нам нужно изменить класс MyPanel, чтобы установить нового слушателя:

Этот код сообщает pydispatcher слушать любого отправителя, у которого есть сигнал от panelListener. Если у него есть этот сигнал, тогда он вызовет панель метода myListener. Это было довольно простое изменение.

ИТОГИ

Как я уже упоминал в начале статьи, пакет PyDispatcher в wxPython следует той же идее, что и пакет PubSub, но, с точки зрения кода, исполняет её немного по-другому. Лично я предпочитаю Pubsub, так как его версия встроена в wxPython, так что мне не нужно устанавливать никаких дополнений. Как бы то ни было, вам стоит взглянуть на оба API, чтобы понять какой из них будет оптимально подходить под ваш стиль программирования. Иногда лучшее API стоит установки дополнительных приложений.