如何阻止QThread关闭?

2024-04-24 13:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为Minecraft编写一个启动器(参见完整的代码:http://pastie.org/6633420),我知道这是一个游戏,但它的编程仍然很有趣。在

目前,我在使用QThread线程时遇到问题,因为所有线程似乎都在应该关闭之前关闭。我得到错误:QThread: Destroyed while thread is still running。除了我之前在代码中所做的,还有什么方法可以解决这个问题吗

for i in range(1,50):
    QThread.msleep(200)
    QCoreApplication.processEvents()

因为我确信这是一个很糟糕的做法,而且效果不好,因为它会导致应用程序在某些时候没有响应。在


Tags: 代码orghttp游戏is编程错误线程
1条回答
网友
1楼 · 发布于 2024-04-24 13:33:00

这实际上是Qt的Python绑定中的一种bug。^在函数返回时,{}在函数内部实例化(MainWidget.update_software)会在函数返回时被垃圾回收,这会导致执行以QThread: Destroyed while thread is still running消息提前结束。在

要解决这个问题,有两种选择:

  1. 在函数内的线程上调用.wait(),这样线程就可以在函数返回之前完成处理。但是这会阻塞主线程,这可能不是您想要的。在
  2. 将所有线程实例设置为实例变量或全局变量,以便线程的生存期分别持续所包含实例或程序的持续时间。在

相关问题 更多 >