PyQt5基础学习-两个线程进行信号交互

步骤: 在主线程中实例化并且启动子线程,然后由子线程通过信号发送器向主线程发送信号

ThreadUpdateUI.py

复制代码
"""
多线程更新UI数据(在两个线程中传递函数)
"""
from PyQt5.QtCore import QThread, pyqtSignal, QDateTime
from PyQt5.QtWidgets import QApplication, QDialog, QLineEdit
import time
import sys

class BackendThread(QThread):
    update_date = pyqtSignal(str)
    
    #在子线程start以后, 自动调用
    #主要功能是发送当前的时间
    def run(self):
        while True:
            data = QDateTime.currentDateTime()
            currentTime = data.toString("yyyy-MM-dd hh:mm:ss")
            self.update_date.emit(str(currentTime))
            time.sleep(1)

class ThreadUpdate(QDialog):
    def __init__(self):
        super(ThreadUpdate, self).__init__()
        self.setWindowTitle("多线程更新UI数据")
        self.resize(400, 100)
        self.input = QLineEdit(self)
        self.input.resize(400, 100)

        self.initUI()

    def initUI(self):
        #构造子线程
        self.backbend = BackendThread()
        #在主线程定义, 子线程的信号槽函数
        self.backbend.update_date.connect(self.handleDisplay)
        #start以后会调用run函数
        self.backbend.start()

    def handleDisplay(self, data):
        self.input.setText(data)



if __name__ == "__main__":
    app = QApplication(sys.argv)

    main = ThreadUpdate()
    main.show()

    sys.exit(app.exec_())
复制代码

 

posted @   c语言我的最爱  阅读(1025)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示