我正在为Minecraft编写一个启动器(请参阅完整代码:http://pastie.org/6633420),我知道这是一款游戏,但编程仍然很有趣。
目前,我遇到了使用QThread进行线程化的问题,因为所有线程似乎都应该关闭。我收到错误:QThread: Destroyed while thread is still running
。有没有办法解决这个问题,除了我之前在代码
for i in range(1,50):
QThread.msleep(200)
QCoreApplication.processEvents()
因为我确定它真的很糟糕并且效果不好,因为它导致应用程序在某些时候没有响应。
答案 0 :(得分:7)
这实际上是Qt的Python绑定中的一种错误。函数内部QThread
实例化(在您的情况下为MainWidget.update_software
)在函数返回时进行垃圾收集,这会导致执行在QThread: Destroyed while thread is still running
消息的早期结束。
要解决此问题,有两种选择:
.wait()
,以便线程可以在函数返回之前完成处理。但这会阻塞主线程,这可能不是你想要的。