Вступление в Pubsub — wxPython #7

автор

Несколько лет назад я написал туториал для wxPython 2.8. и его встроенного Pubsub модуля, который вы можете прочесть в моём блоге. Тогда же, новое API для Pubsub было добавлено в wxPython 2.8.11.0. Запустить его можно было с помощью этого кода:

Старый способ импорта Pubsub выглядел так:

Теперь в версии wxPython 2.9 и новее, он выглядит так:

Зачем я упоминаю всё это? Поскольку в интернете ещё можно встретить туториалы для wxPython 2.8, эта информация может оказаться полезной, а также есть люди, которые по каким-то причинам не хотят переходить на более новую версию.

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python. Список книг: Книги по Python

Модуль Pubsub в wxPython также распространяется и отдельно, так что вы можете без проблем добавить его к вашим собственным приложениям Python. Проще говоря, пакет Pubsub позволяет вам писать программы, которые следуют модели Publish/Subscribe. Основная идея в том, чтобы создать одного или несколько слушателей, известных также как подписчики. У подписчиков будет отображаться сообщение, которое вы распространяете через паблишер.

Текущая версия Pubsub API

Я считаю, что писать код по частям и проверять каждую из них – это отличная идея. Так что давайте напишем простой код, чтобы узнать, насколько хорошо вы поняли логику.

Как я уже говорил, импорт выглядит немного иначе. Позже мы увидим, что ещё изменилось. В классе панелей мы создаём слушателя следующим образом:

Метод myListener принимает один или несколько аргументов. В данном случае, мы настраиваем его таким образом, чтобы он всегда требовал один аргумент (сообщение) и опциональный аргумент (arg2). Затем мы переходим к классу OtherFrame, где нам нужно обратить внимание на метод onSendAndClose. В данном методе, вы можете увидеть, что он отправляет 2 сообщения:

Первый отправляет только требуемую информацию, в то время как второй отправляет оба аргумента. Вы заметите, что новое API требует явные аргументы с ключевыми словами. Если вы измените первую команду sendMessage на pub.sendMessage(“panelListener”, msg), то вы получите исключение TypeError.

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python. Список книг: Книги по Python

Итоги

Сейчас вы уже ознакомились с азами использования Pubsub в ваших wxPython приложениях. Я хочу обратить внимание на то, что Pubsub не обладает потоковой безопасностью, так что имейте это в виду. Если вы применяете Pubsub в потоке, вам нужно будет использовать метод, обладающий потоковой безопасностью, такой как wx.CallAfter или wx.PostEvent, так как они позволят отправлять сообщения вашим слушателям, исключая вероятность появления в вашем коде странных ошибок. Я использую Pubsub во многих своих программах и считаю его достаточно полезным.

Вам может быть интересно

Scroll Up

Подпишись на канал!

Новые видеоуроки, книги и полезные статьи для python программистов!