2012-07-27 67 views
1

我已经成功地将我的PyQT4 GUI中的昂贵例程外包给工作人员QThread,以防止GUI无响应。不过,我希望GUI等待工作线程完成处理后继续执行自己的代码。如何告诉我的主GUI在工作线程上等待?

我立即想到的解决方案是让线程在完成时发出一个信号(据我所知,QThreads已经这样做),然后在代码的其余部分之前在主窗口中查找此信号执行。这被黑客入侵了吗?

我知道QThread提供了这里描述的wait()函数,但是用法对我来说还不清楚。我想我想在主线程中调用它,但我不知道如何在我的应用程序中调用它...?

回答

1

这是一个非常糟糕的计划。拆分'线程之前'和'线程之后'。 '线程后处理'应该是由线程可以发信号的QueuedConnection触发的一个插槽。

不要在GUI事件处理程序中等待!

0

如果GUI线程在worker线程对象上调用wait()函数,它将不会从它返回,直到工作线程从其主函数返回。这不是你想要做的。

您使用信号和插槽描述的解决方案似乎对我很有意义。或者你可以使用布尔值。