在PyQt4中保持线程存活

1 投票
1 回答
694 浏览
提问于 2025-04-16 01:03

我有一个使用PyQt4的应用程序,在某个时候需要用tarfile模块打包一个大文件。因为tarfile模块没有实现任何回调机制,所以在打包的时候会阻塞,导致Qt的图形界面变得无响应。

我希望在这个过程中,图形界面能够持续更新。唯一的办法就是使用一个单独的线程。于是,我启动了一个QThread。那么,我在这个QThread里需要做些什么,才能让图形界面自己更新呢?

一旦打包完成,我希望这个线程也能结束。

谢谢!
Nathan

1 个回答

1

QThread和普通的Python线程基本上是一样的,所以你可以用普通的通信方法来处理。不过,QThread还有一些额外的信号可以使用,如果你直接连接这些信号,那就简单多了。

在你的图形界面代码中,做一些类似下面的事情,你就差不多完成了:

thread = Thread()
thread.finished.connect(gui.do_update_thingy)

另外,还有一个叫terminatedstarted的信号可以用哦 :)

撰写回答