pyqt的线程的使用非常简单-建立一个自定义的类(如thread),使它继承自QThread,并实现其run()方法即可; 在使用线程时可以直接得到thread实例,调用其start()函数即可启动线程。线程启动后,会自动调用其实现run方法,该方法就是线程的执行函数。
业务的线程任务就写在run()函数中,当run()退出之后线程基本就结束了。
常用方法:strat():启动线程
wait():阻值线程
sleep():强制当前线程睡眠毫秒
常用信号:started:在开始执行run()函数前,从相关线程发射此信号
finished:当程序完成业务逻辑时,从相关线程发射此信号
步骤:1.建立一个线程实例
2.在主线程类创建一个属性连接子线程
3.使用strat()开始子线程
from PyQt5.QtCore import * from PyQt5.Qt import * from PyQt5.QtGui import * import sys import cgitb sys.excepthook = cgitb.Hook(1, None, 5, sys.stderr, 'text') class mythread(QThread): # 步骤1.创建一个线程实例 mysignal = pyqtSignal(tuple) # 创建一个自定义信号,元组参数 def __init__(self): super(mythread, self).__init__() def run(self): a = (1, 2) self.mysignal.emit(a) # 发射自定义信号 class Window(QWidget): def __init__(self): super(Window, self).__init__() self.setWindowTitle('信号传输') self.resize(500,500) self.move(50,50) self.setup_ui() self.my_thread = mythread() # 步骤2. 主线程连接子线 self.my_thread.mysignal.connect(self.zhi) # 自定义信号连接 self.my_thread.start() # 步骤3 子线程开始执行run函数 def setup_ui(self): self.line1 = QLineEdit(self) self.line1.move(0,0) self.line1.resize(50,50) self.line2 = QLineEdit(self) self.line2.move(50, 50) self.line2.resize(50, 50) def zhi(self, zhi): a, b = zhi self.line1.setText(str(a)) self.line2.setText(str(b)) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())