Найти - Пользователи
Полная версия: Как поймать событие объектом не имеющим метод Bind()?
Начало » GUI » Как поймать событие объектом не имеющим метод Bind()?
1
reNeo
Вопрос по wxPython.
Создал свой тип события которое я “создаю (ввожу в процесс обработки)” с помощью self.GetEventHandler().ProcessEvent(evt).
Теперь мне надо обработать это событие тем объектом который не содержит метода Bind(), я определил только фукцию для этого события. А как мне поймать это событие?
reNeo
Может кому-нить это понадобится…
Данную свою проблему я обошел с помощью библиотеки “Publisher”, которая подключается так:
from wx.lib.pubsub import Publisher
Теперь допустим нам надо чтобы при нажатии на кнопочку в одном окне, в другом окне отображалось какое-нить сообщение или менялось какое-нить текстовое поле, не важно…
Делаем так: в том модуле программы где нажали на кнопку, в функции, обрабатывающей событие этой кнопки вставляем эту строку:
Publisher( ).sendMessage( ( 'topic', 'subtopic' ), data )
где ‘topic’ и ‘subtopic’ - это соответственно тема и подтема сообщения, это всего лишь названия и могут быть любыми, а также может отсутствовать ‘subtopic’; data - это отправляемые данные.
Теперь в том модуле программы, где необходима реакция на данное сообщение вставляем строку:
Publisher( ).subscribe( self.OnMessage, ( 'topic', 'subtopic' ) )
Функцию, обрабатывающее данное сообщение оформляем так:
def OnMessage( self, mess ):
    #mess.data - здесь буду отправленные данные
    #statement
    #statement
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB