我有一个用PySide编写的Qt应用程序(Qt Python绑定)。这个应用程序有一个GUI线程和许多不同的QThreads负责执行一些繁重的任务 - 一些相当长的任务。由于这种长时间的任务有时会受阻(通常是因为它正在等待服务器响应),因此应用程序有时会冻结。在设定的时间间隔内调用QCoreApplications.processEvents()是否安全?
因此,我想知道是否可以每隔一秒左右手动调用QCoreApplication.processEvents()
以便GUI事件队列被清除(处理)?这是一个好主意吗?
为什么主线程冻结,如果所有工作都是由其他线程完成的? – wRAR 2013-02-22 00:40:22
这是一个很好的问题,我没有很好的答案。我曾经问过Qt论坛,他们说这是因为应用程序没有处理任何事件,这就是为什么它看起来被冻结。可能还有一些事实,即有100多个线程同时运行。 – 2013-02-22 00:45:56
如果主线程在Qt事件循环中,它应该处理消息(除非您的机器太忙,但与您的代码没有直接关系)。 – wRAR 2013-02-22 00:51:22