QThread: Destroyed while thread is still running 解决方法

错误发生场景:

使用UI与逻辑分离,继承UI类,使用耗时比较长的操作时,界面会卡死

选择QThread的方法进行处理,继承QThread类,并在继承UI类中

self.get_unjudged_comments_thread = GetUnjudegedCommentsThread()
self.get_unjudged_comments_thread.my_signal.connect(self.get_unjudged_comments_success)
self.get_unjudged_comments_thread.start()

我这里代码的作用是点击pushButton后,连接后端,后端进行数据库查询并且将数据用socket返回给PyQt,这将耗费大量的时间,在等待槽函数处理时,界面会卡死。所以用QThread来处理。

其中GetUnjudegedCommentsThread()为我创建的继承的QThread类,再使用信号传递处理结果,这样看似万事大吉,但是在macOS下(windows没试过)会报QThread: Destroyed while thread is still running错误。

解决办法:在self.get_unjudged_comments_thread.start()后面跟一句self.get_unjudged_comments_thread.exec()保护一下就好了。。。网上解决方法大多行不通,行得通的太麻烦,特此记录

exec()在官方文档中的属性是protected,作用为使线程进入时间循环状态,并且处于wait状态,直到退出。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值