UI线程完成后,使用子线程实现一个延时展示的效果
作者:互联网
pyqt项目
主线程有翻页功能,当前页面有5个螺丝钉,每个螺丝钉完成之后其颜色会变成绿色,当所有螺丝钉完成之后会进行翻页。
当最后一个螺丝钉完成之后,螺丝钉会有一个翻页功能,但由于主程序一直在运行,当前展示的页面4绿1黄就一直没有变化,导致直观上感觉是没有完成第5个螺丝,直接跳到了后一页。
使用子线程,延时触发翻页功能。主线程执行完所有程序,界面(5绿)得以展示,而后翻页。
代码如下
# 主线程
class MainWindow(QWidget):
def __init__(self):
self.bg_th = backgroundThread()
self.bg_th.pthread.connect(self.count_next_page)
...
def count_next_page(self, message):
print('count_next_page:' + message)
self.next_page()
# 后台子线程,延时触发
class backgroundThread(QThread):
pthread = pyqtSignal(str)
def __init__(self):
super(backgroundThread, self).__init__()
def run(self):
try:
sleep(0.001) # 可以用锁之类的来替代?避免写死时间
self.pthread.emit('')
except Exception as e:
print(e)
期间尝试了后台子线程开启之后直接触发,但发现这样会出现翻页前的螺丝变绿时而成功时而失败,
思考之后觉得原因应该是主线程开启子线程之后,子线程抢占了CPU,马上触发了翻页功能,从而导致这个子线程用不用是一样的。所以一定要有个延时。
标签:__,翻页,self,螺丝钉,UI,延时,线程,page 来源: https://blog.csdn.net/zlb_zlb/article/details/113405359