wxPython: Threading GUI -> Использование пользовательского обработчика событий
Я пытаюсь узнать, как запустить поток из основного приложения с графическим интерфейсом, чтобы выполнять отправку / получение моего последовательного порта при сохранении моего графического интерфейса. Мои лучшие попытки поиска Google привели меня в wxpython вики на:http://wiki.wxpython.org/LongRunningTasks который предоставляет несколько примеров. Я остановился на изучении первого примера, включающего запуск рабочего потока, когда выбрана конкретная кнопка.
У меня проблемы с пониманием пользовательского определения события:
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
class ResultEvent(wx.PyEvent):
"""Simple event to carry arbitrary result data."""
def __init__(self, data):
"""Init Result Event."""
wx.PyEvent.__init__(self)
self.SetEventType(EVT_RESULT_ID)
self.data = data
Прежде всего
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
Я думаю, что EVT_RESULT размещен вне классов, чтобы сделать его доступным для вызова обоими классами (делая его глобальным?)
И ... основное приложение с графическим интерфейсом контролирует продвижение потока через:
# Set up event handler for any worker thread results
EVT_RESULT(self,self.OnResult)
Я также заметил, что во многих примерах, когда автор использует
from wx import *
они просто связывают вещи
EVT_SOME_NEW_EVENT(self, self.handler)
в отличие от
wx.Bind(EVT_SOME_NEW_EVENT, self.handler)
Что не помогает мне понять это быстрее. Спасибо,