wxpython:螺纹GUI->使用自定义事件处理程序
-
23-09-2019 - |
题
我正在尝试学习如何从主GUI应用程序上运行线程,以执行我的串行端口发送/接收,同时保持GUI活着。我最好的谷歌尝试使我进入了wxpython wiki: 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)
这无助于我更快地理解它。谢谢,
解决方案
在完成更改后,内容是否已被正确重新索引?根据您的版本和环境设置,新权限可能不会在搜索结果中生效,直到内容爬出。
其他提示
这就是定义自定义事件的旧风格。看 迁移指南 了解更多信息。
取自《迁移指南》:
如果您创建自己的自定义事件类型和evt_*函数,并且您希望能够使用上面的绑定方法使用它们,那么您应该将EVT_*更改为一个实例
wx.PyEventBinder
而不是函数。例如,如果您曾经有这样的东西:myCustomEventType = wxNewEventType() def EVT_MY_CUSTOM_EVENT(win, id, func): win.Connect(id, -1, myCustomEventType, func)
像这样更改:
myCustomEventType = wx.NewEventType() EVT_MY_CUSTOM_EVENT = wx.PyEventBinder(myCustomEventType, 1)
这是另一个帖子 我使用了几个示例程序制作,这些程序正是您要寻找的。
一个选项是通过电子邮件启用您要发送文件的文档库,然后使用此电子邮件地址通过电子邮件发送SharePoint Server,它将在文档库中存储报表。我过去使用这种技术,使用了一个没有集成模式的SSRS服务器,以将报告转换为SharePoint。
这假定您的SharePoint Farm已配置传入电子邮件。
不隶属于 StackOverflow