смешанное использование PyPubSub и встроенного в pubsub модуля wxPython - PullRequest
0 голосов
/ 25 января 2019

У меня есть механизм приложений, в котором внутрипрограммное взаимодействие осуществляется с помощью PyPubSub.

Planned - это несколько отзывчивый графический интерфейс, который, например, включает / отключает виджеты в зависимости от состояния модели.Это может быть реализовано с использованием wxPython.

Поскольку wxPython имеет собственную библиотеку pubsub (которая является PyPubSub), которая работает через GUI, вопрос заключается в следующем: как поддерживать модель MVC.

Является ли онаМожно ли (и что более важно: имеет ли это смысл) смешивать две системы обмена сообщениями при сохранении шаблона MVC?Например, чтобы эти две системы обмена сообщениями были разделены при одновременном включении в GUI подписчиков на темы движка?

Или я просто буду использовать pubsub модели (то есть движка приложения) в GUI и не использоватьwxPython встроенный?

Любая помощь приветствуется в этом довольно концептуальном вопросе.

1 Ответ

0 голосов
/ 27 января 2019

Резюме (автор pypubsub): если вы импортируете из pypubsub вместо wx.lib.pubsub, все будет работать, у вас не будет «двух систем обмена сообщениями».

Детали:

В пакете wx нет ничего, что на самом деле использует wx.lib.pubsub; последний по-прежнему находится в wx.lib только по старым причинам (см. ниже), и вы сами решаете, хотите ли вы использовать публикацию-подписку в вашем приложении wxPython.

История pypubsub / wx.lib.pubsub: wx.lib.pubsub изначально был модулем, разработанным для wxPython и включенным в его исходный код. Она была удалена как автономная библиотека с именем pypubsub (более 10 лет назад!), Поскольку от нее ничего не зависело в wxPython и наоборот. Для обратной совместимости wx.lib.pubsub был сохранен в качестве особого «релиза» автономной pypubsub (например, wxPython 3 использовал pypubsub 3.3). Однако последний wxPython (4.0.4) устарел как wx.lib.pubsub: вместо этого вы должны установить автономный pypubsub непосредственно из pip install или github и использовать from pubsub import pub (вместо from wx.lib.pubsub import pub).

Если вы можете, вы должны использовать wxPython 4.0.4, Python 3.7 и pypubsub 4.0.0 (скоро выйдет 4.0.1 и поддерживает аргументы только для ключевых слов).

...