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_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM