1

我已经成功地将我的 PyQT4 GUI 中一个昂贵的例程外包给了一个工作线程 QThread,以防止 GUI 无响应。但是,我希望 GUI 等到工作线程完成处理才能继续执行自己的代码。

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

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

4

2 回答 2

1

这是一个非常糟糕的计划。拆分“线程操作前”和“线程操作后”。“线程后操作”应该是由线程可以发出信号的 QueuedConnection 触发的插槽。

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

于 2012-07-27T21:14:37.857 回答
0

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

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

于 2012-07-27T21:15:49.427 回答