允许从任何线程调用wxPython对象的方法。
项目描述
wxAnyThread:允许从任何线程调用wxPython对象的方法
在wxPython中,只有从运行主事件循环的线程调用修改GUI状态的
方法才是安全的。其他线程通常必须将事件
发送到GUI线程而不是直接调用方法。
虽然存在内置的快捷方式(例如wx.CallAfter),但它们并不能
捕获函数调用的完整语义。此模块提供了一个简单
的方法来从任何线程透明地调用方法,将返回值和异常
传播回调用线程。
主接口是一个名为"anythread"的装饰器,可以应用于方法
使其可以从任何线程安全地调用,如下所示
class MyFrame(wx.Frame)
@anythread
def GetSomeData()
dlg = MyQueryDialog(self,"Enter some data")
if dlg.ShowModal() == wx.ID_OK
resp = dlg.GetResponse()
return int(resp)
else
raise NoDataEnteredError()
GetSomeData方法现在可以从任何线程直接调用。
调用线程将在主GUI线程显示对话框时阻塞,
然后根据需要接收返回值或异常。
在wxPython中,只有从运行主事件循环的线程调用修改GUI状态的
方法才是安全的。其他线程通常必须将事件
发送到GUI线程而不是直接调用方法。
虽然存在内置的快捷方式(例如wx.CallAfter),但它们并不能
捕获函数调用的完整语义。此模块提供了一个简单
的方法来从任何线程透明地调用方法,将返回值和异常
传播回调用线程。
主接口是一个名为"anythread"的装饰器,可以应用于方法
使其可以从任何线程安全地调用,如下所示
class MyFrame(wx.Frame)
@anythread
def GetSomeData()
dlg = MyQueryDialog(self,"Enter some data")
if dlg.ShowModal() == wx.ID_OK
resp = dlg.GetResponse()
return int(resp)
else
raise NoDataEnteredError()
GetSomeData方法现在可以从任何线程直接调用。
调用线程将在主GUI线程显示对话框时阻塞,
然后根据需要接收返回值或异常。
项目详细信息
关闭
wxAnyThread-0.2.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c2fbf68c55c932748065254be31cacf8761d86ad52b4dc35a252152e403285d |
|
MD5 | 2979fc528ac69e4d6f0be45894f92b0a |
|
BLAKE2b-256 | 9366c70094a3bbaae1feaee51b80a2c467eff8b7e924a597149804d43fedae50 |