目录
一、前言
本文使用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)