我正在尝试学习如何在主 GUI 应用程序上运行线程来执行串行端口发送/接收,同时保持 GUI 处于活动状态。我最好的谷歌搜索尝试让我找到了 wxpython wiki:http://wiki.wxpython.org/LongRunningTasks 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 放置在类之外,以便两个类都可以调用它(使其成为全局的?)
并且..主 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)
这并不能帮助我更快地理解它。
谢谢,