其他分享
首页 > 其他分享> > UI线程完成后,使用子线程实现一个延时展示的效果

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