我正在尝试学习如何从主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已配置传入电子邮件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top