WxPython:如何在主子帧中停止进一步的代码执行,直到其子帧关闭为止

时间:2012-10-02 13:18:02

标签: python wxpython python-2.7

我正在研究一个用python编写的项目,在Wxpython中使用GUI进行最后3个不眠之夜现在我被击中了。实际上在主父框架内我正在另一个线程中执行一个新的子线我想要的一切是停止进一步的代码执行,直到其子帧完成其工作并关闭。 我尝试过使用 threading.Thread.join()方法,但它似乎没有效率,并且在关闭子帧后主要父帧挂起。 有没有有效的方法来做这件事?

1 个答案:

答案 0 :(得分:4)

使用wx.Dialog而不是子帧及其ShowModal()方法来停止主帧的执行。从技术上讲,您也可以使用框架的MakeModal()方法获得类似的效果,但我认为使用对话框更有意义。

顺便说一句,当使用带有wxPython(或任何GUI工具包)的线程时,必须使用工具包的线程安全方法来更新GUI。您不应该尝试直接从线程访问GUI元素,因为这是未定义的行为。相反,使用wx.CallAfter,wx.CallLater或wx.PostEvent,因为它们是wxPython的线程安全方法。

另见: