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_())
QThread

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-13
  • 2021-08-08
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
  • 2021-05-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案