线程wxPython应用程序与多点触摸检测的后台进程



因此,基本上我有一些多点触摸检测的代码,我想将其作为一个单独的线程运行,在多点触摸事件时将自定义事件发送到wxPython GUI。

现在我可以发布多点触控追踪的代码,但要使用它,你需要一个触控板、服务器应用程序和检测代码,所以我认为为了这个问题,最好考虑一个简单的例子。

例如,假设一个事件模拟器每10秒发送一个事件:

import wx
import wx.lib.newevent
import time
MultiTouchEvent, EVT_MULTITOUCH = wx.lib.newevent.NewEvent()
class EventSimulator:
    def __init__(self):
        self.eventdata = 0
    def Start(self):
        self.RunTUIO()
    def RunTUIO(self): 
        while True:
            time.sleep(10)
            wx.PostEvent(GUI, MultiTouchEvent(self.eventdata))
            self.eventdata += 1
if __name__ == '__main__':
    MultiTouchTracker = EventSimulator() 
    MultiTouchTracker.Start()

现在,每当这些事件发生在wxPython GUI中时,我都想接收它们(类似于这样):

import wx
class Frame(wx.Frame):
     def __init__(self, title):
         wx.Frame.__init__(self, None, title=title, size=(350,200))
         self.Bind(EVT_MULTITOUCH, self.handler)
     def handler(self, event):
         data = event.data, 
         print data
if __name__ == '__main__':
    app = wx.App(redirect=False)
    window = Frame("My Basic GUI")
    window.Show()
    app.MainLoop()

问题是我无法训练如何将这两段代码组合成一个工作示例。据我所知,我需要将事件模拟器作为GUI代码中的一个独立线程来运行。请有人解释一下怎么做,谢谢!

有关Python中多线程的详细信息,请参阅Python库中threading模块的文档。在wxPython演示的Threads模块中,有一个在GUI中使用它的例子,尽管也有其他可行的方法。(从Thread类派生而不是仅使用一个,等等)该演示模块还展示了使用wx.lib.newevent模块创建新事件类和绑定器的方便方法。

相关内容

  • 没有找到相关文章

最新更新