Я пытаюсь научиться запускать поток из основного приложения графического интерфейса, чтобы выполнять отправку/получение последовательного порта, сохраняя мой графический интерфейс живым. Мои лучшие попытки Googling приземлили меня на wxpython wiki по: http://wiki.wxpython.org/LongRunningTasks, который содержит несколько примеров. Я решил изучить первый пример, связанный с запуском рабочего потока, когда выбрана конкретная кнопка.wxPython: Threading GUI -> Использование обработчика пользовательских событий
У меня возникли проблемы с пониманием пользовательских-событий-определение:
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 находится вне классов, с тем чтобы сделать его колл-возможность обоими классы (что делает его глобальным?)
И .. основное приложение GUI отслеживает ход потока через:
# 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)
Какие Безразлично «Помогите мне понять это быстрее. Спасибо,
спасибо за ответ, я буду ссылаться на него, когда работаю над ним. – PPTim