相关技术版本
python 3.8.2
PyQt5 5.15.4
PyQt5-Qt5 5.15.2
PyQt5-sip 12.9.0
1. 自定义线程
from PyQt5.QtCore import pyqtSignal, QThread
class ThreadUtils(QThread):
# 数据信号
data_signal = pyqtSignal(dict)
# 提示语信号
tips_signal = pyqtSignal(dict)
# 操作信号
actions_signal = pyqtSignal(dict)
def __init__(self, parent, types):
super().__init__(parent)
# 线程调用类型(用于单个线程处理不同逻辑)
self.types = types
def run(self):
# --------------------------线程执行逻辑处理-------------------------
results = []
if types == '条件1':
print('添加第一个执行逻辑')
elif types == '条件2':
print('添加第二个执行逻辑')
self.action_callback(types, results)
# 执行完毕回调函数(此函数可以不加,此处为了验证线程是否结束)
def finish(self):
print('线程结束了!')
self.wait()
self.quit()
# 数据信号槽
@pyqtSlot(dict)
def action_callback(self, types, data):
self.data_signal.emit({'types': types, 'data': data})
# 提示信号槽
@pyqtSlot(dict)
def tips_callback(self, info):
self.tips_signal.emit(info)
# 操作信号槽
@pyqtSlot(dict)
def action_callback(self, info):
self.actions_signal.emit(info)
2. 使用自定义线程
from ThreadUtils import ThreadUtils
class Main:
def __init__(self):
super().__init__()
self.thread = ThreadUtils()
# 调用线程
def call_thread(self):
self.thread.types='条件1'
self.thread.start()
thread_id = self.thread.currentThreadId()
print('线程启动成功,其ID为:{}'.format(thread_id))
3. 模拟启动程序调用线程
from main import Main
m = Main()
# 调用方法启动线程
m.call_thread()
此样例比较简单,仅提供自定义线程参考,如有疑问欢迎在下方留言。