PyQt5多线程的使用
UI界面经常遇到,当执行某个按钮时,其内部逻辑函数处理时间较长的话会导致UI几面假死,此时需要将按钮对应函数放在另一个线程中去处理。如下为线程代码:
一、线程函数
from PyQt5.QtCore import Qt,QThread,pyqtSignal
class Rule_Thread(QThread):
_rule = pyqtSignal(str) #设置触发信号传递的数据类型,此处为 str类型
def __init__(self):
super(Rule_Thread,self).__init__ #初始化线程
def run(self): #此为该线程需执行的函数,函数名必须为run
'''加入按钮所需执行的函数代码'''
i = 'wake up!'
self._rule.emit(str(i)) #返回所需的参数值
二、按钮绑定启动线程函数
self.button.clicked.connect(self.Rule_update)
def Rule_update(self):
self.rule_thread = Rule_Thread() #定义一个变量指向线程函数
self.rule_thread._rule.connect(self.update_rule) #将线程中的_rule信号传递参数绑定一个函数,该函数可返回信号传递出来的具体参数值
self.rule_thread.start() #开始线程处理
def update_rule(self,r): #r为_rule返回的参数值
......