我正在开发一个用 Python 编码的项目,在 Wxpython 中使用 GUI 进行了最后 3 个不眠之夜,现在我被击中了。实际上,在主父框架内,我正在另一个线程中执行一个新的子框架,我想要的只是停止进一步的代码执行,直到它的子框架有完成工作并关闭。我曾尝试使用threading.Thread.join()方法,但它似乎不能有效地工作,并且在子框架关闭后主父框架挂起。有什么有效的方法来做这件事吗?
问问题
472 次
1 回答
4
使用 wx.Dialog 代替子框架及其 ShowModal() 方法来停止主框架的执行。从技术上讲,您也可以使用框架的 MakeModal() 方法来获得类似的效果,但我认为使用对话框更有意义。
顺便说一句,当使用 wxPython(或任何 GUI 工具包)的线程时,您必须使用工具包的线程安全方法来更新 GUI。您不应尝试从线程直接访问 GUI 元素,因为这是未定义的行为。相反,使用 wx.CallAfter、wx.CallLater 或 wx.PostEvent,因为它们是 wxPython 的线程安全方法。
也可以看看:
于 2012-10-02T14:28:52.927 回答