我已成功将PyQT4 GUI中的昂贵例程外包给工作人员QThread,以防止GUI无响应。但是,我希望GUI等待工作线程完成处理以继续执行自己的代码。
我立即想到的解决方案是让线程在完成时发出信号(据我所知,QThreads已经这样做了),然后在执行其余代码之前在主窗口中查找此信号。这是被黑的吗?
我知道QThread提供了这里描述的wait()函数,但我的用法并不清楚。我想我想在主线程上调用它,但我不确定如何在我的应用程序中调用它??
答案 0 :(得分:1)
这是一个非常糟糕的计划。拆分'在线程操作之前'和'在线程操作之后'。 '后线程操作'应该是线程可以发出信号的QueuedConnection触发的插槽。
不要在GUI事件处理程序中等待!
答案 1 :(得分:0)
如果GUI线程在工作线程对象上调用wait()
函数,则在工作线程从其主函数返回之前,它不会从中返回。这不是你想要做的。
您使用信号和插槽描述的解决方案对我来说似乎很有意义。或者你可以使用布尔值。