线程thread、信号siganl、槽slot

目录

一、前言

二、发射线程代码thread_slot.py

三、接收线程代码thread_slot.py

四、实测结果:


一、前言

本文使用PyQt5.QtCore里面的QThread类创建线程,分别创建线程signal 和线程slot,并创建信号和槽函数;在一个线程里发射信号,另一个线程里接收信号;实现两个线程信息的交互;

二、发射线程代码thread_slot.py

import sys
import time
from PyQt5.QtCore import QThread, pyqtSignal, QObject
import random
from PyQt5 import QtWidgets
from thread_signal import SubThread_Slot

class SubThread_Signal(QThread):
    messagetrigger = pyqtSignal(str)
    def __init__(self):
        super().__init__()
    def __del__(self):
        self.wait()
    def run(self):
        while(1):      
            self.messagetrigger.emit('abcd')
            time.sleep(2)

if __name__ == '__main__':

    app = QtWidgets.QApplication(sys.argv)
    subthread_signal = SubThread_Signal()
    subthread_signal.messagetrigger.connect(SubThread_Slot.callback)
    subthread_signal.start()

    subthread_slot = SubThread_Slot()
    subthread_slot.start()
    sys.exit(app.exec_())

三、接收线程代码thread_slot.py


import time 
from PyQt5.QtCore import QThread, pyqtSignal, QObject

class SubThread_Slot(QThread):

    def __init__(self):
        super().__init__()
    def __del__(self):
        self.wait()
    def run(self):
        while(1):
            print('槽线程正在接收')
            time.sleep(1)
    def callback(msg):
        if(msg == 'abcd'):
            print('收到发射信号:',msg)

四、实测结果:

线程thread、信号siganl、槽slot_第1张图片

你可能感兴趣的:(python,开发语言,信号和槽,线程,thread)