允许从任何线程调用wxpython对象方法。
wxAnyThread的Python项目详细描述
wxAnyThread:允许wxPython对象上的方法从wxPython中的任何线程调用,更改GUI状态的方法只能从运行主事件循环的线程调用其他线程通常必须将
事件发布到gui线程,而不是直接调用方法。
虽然有用于此操作的内置快捷方式(例如wx.callafter),但它们不会捕获函数调用的完整语义。该模块提供了一种简单的方法,可以从任何线程*透明*调用方法,将返回值和异常传播回调用线程。
主接口是一个名为“any thread”的装饰器,可以将它应用于方法,使它们可以安全地从任何线程调用就像这样:
MyFrame类(wx.Frame):
@anythread
def GetSomeData():
dlg=MyQueryDialog(self,“输入一些数据”)
如果dlg.showmodel()==wx.id_ok:
resp=dlg.getresponse()
return int(resp)
否则:
raise nodataenterederor()
getsomedata方法现在可以从任何线程直接调用。
调用线程将阻塞,而主gui线程显示对话框,
,然后将根据需要接收返回值或异常。
事件发布到gui线程,而不是直接调用方法。
虽然有用于此操作的内置快捷方式(例如wx.callafter),但它们不会捕获函数调用的完整语义。该模块提供了一种简单的方法,可以从任何线程*透明*调用方法,将返回值和异常传播回调用线程。
主接口是一个名为“any thread”的装饰器,可以将它应用于方法,使它们可以安全地从任何线程调用就像这样:
MyFrame类(wx.Frame):
@anythread
def GetSomeData():
dlg=MyQueryDialog(self,“输入一些数据”)
如果dlg.showmodel()==wx.id_ok:
resp=dlg.getresponse()
return int(resp)
否则:
raise nodataenterederor()
getsomedata方法现在可以从任何线程直接调用。
调用线程将阻塞,而主gui线程显示对话框,
,然后将根据需要接收返回值或异常。