如何通过PyQt的QThread类实现高效的多线程编程?

2026-05-28 23:141阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计521个文字,预计阅读时间需要3分钟。

如何通过PyQt的QThread类实现高效的多线程编程?

使用PyQt中的QThread类实现多线程,并利用pyqtSignal实现信息的触发展和捕获,定义事件和订阅事件,使用QThread类实现多线程的方法,新建一个Python类,继承自QThread。

  • 用PyQt中的QThread类实现多线程
  • 利用PyQt中的pyqtSignal类实现信息的触发和捕获,即定义事件和订阅事件

利用QThread类实现多线程的方法

1,新建一个python类,继承自QThread

from PyQt5.QtCore import QThread class SubThread(QThread):

2,重写__init__(),__del__()和run()函数

from PyQt5.QtCore import QThread class SubThread(QThread): def __init__(self): super().__init__() # 以下加入需要的代码 def __del__(self): self.wait() def run(self): # 以下加入子线程执行的代码

3,将继承自QThread类实例化,然后调用实例对象的start()函数,即可开启新线程

如何通过PyQt的QThread类实现高效的多线程编程?

QThread的子类的实例,必须放在app = QtWidgets.QApplication(sys.argv)和sys.exit(app.exec_())代码之间。

if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) subthread = SubThread() subthread.start() sys.exit(app.exec_())

利用pyqtSignal类实现信息触发和捕获的方法

1,在类内头部定义pyqtSignal属性,记住,是类级别属性

from PyQt5.QtCore import QThread, pyqtSignal class SubThread(QThread): messagetrigger = pyqtSignal(str) def __init__(self): super().__init__() # 以下加入需要的代码 def __del__(self): self.wait() def run(self): # 以下加入子线程执行的代码

2,在需要触发信息的地方使用,调用pyqtSignal的emit()函数触发消息

import timefrom PyQt5.QtCore import QThread, pyqtSignal, QObject class SubThread(QThread): messagetrigger = pyqtSignal(str) def __init__(self): super().__init__() def __del__(self): self.wait() def run(self): self.messagetrigger.emit('子线程开始') time.sleep(2) self.messagetrigger.emit('子线程结束')

3,捕获消息,使用pyqtSignal的connect()连接回调函数,在回调函数内处理捕获到的信息,完整代码如下:

import sysimport timefrom PyQt5.QtCore import QThread, pyqtSignal, QObject from PyQt5 import QtWidgets class SubThread(QThread): messagetrigger = pyqtSignal(str) def __init__(self): super().__init__() def __del__(self): self.wait() def run(self): self.messagetrigger.emit('子线程开始') time.sleep(2) self.messagetrigger.emit('子线程结束') def callback(msg): print(msg) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) subthread = SubThread() subthread.messagetrigger.connect(callback) subthread.start() sys.exit(app.exec_())

以上就是本文的全部内容了,希望对大家学习python能够有所帮助

本文共计521个文字,预计阅读时间需要3分钟。

如何通过PyQt的QThread类实现高效的多线程编程?

使用PyQt中的QThread类实现多线程,并利用pyqtSignal实现信息的触发展和捕获,定义事件和订阅事件,使用QThread类实现多线程的方法,新建一个Python类,继承自QThread。

  • 用PyQt中的QThread类实现多线程
  • 利用PyQt中的pyqtSignal类实现信息的触发和捕获,即定义事件和订阅事件

利用QThread类实现多线程的方法

1,新建一个python类,继承自QThread

from PyQt5.QtCore import QThread class SubThread(QThread):

2,重写__init__(),__del__()和run()函数

from PyQt5.QtCore import QThread class SubThread(QThread): def __init__(self): super().__init__() # 以下加入需要的代码 def __del__(self): self.wait() def run(self): # 以下加入子线程执行的代码

3,将继承自QThread类实例化,然后调用实例对象的start()函数,即可开启新线程

如何通过PyQt的QThread类实现高效的多线程编程?

QThread的子类的实例,必须放在app = QtWidgets.QApplication(sys.argv)和sys.exit(app.exec_())代码之间。

if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) subthread = SubThread() subthread.start() sys.exit(app.exec_())

利用pyqtSignal类实现信息触发和捕获的方法

1,在类内头部定义pyqtSignal属性,记住,是类级别属性

from PyQt5.QtCore import QThread, pyqtSignal class SubThread(QThread): messagetrigger = pyqtSignal(str) def __init__(self): super().__init__() # 以下加入需要的代码 def __del__(self): self.wait() def run(self): # 以下加入子线程执行的代码

2,在需要触发信息的地方使用,调用pyqtSignal的emit()函数触发消息

import timefrom PyQt5.QtCore import QThread, pyqtSignal, QObject class SubThread(QThread): messagetrigger = pyqtSignal(str) def __init__(self): super().__init__() def __del__(self): self.wait() def run(self): self.messagetrigger.emit('子线程开始') time.sleep(2) self.messagetrigger.emit('子线程结束')

3,捕获消息,使用pyqtSignal的connect()连接回调函数,在回调函数内处理捕获到的信息,完整代码如下:

import sysimport timefrom PyQt5.QtCore import QThread, pyqtSignal, QObject from PyQt5 import QtWidgets class SubThread(QThread): messagetrigger = pyqtSignal(str) def __init__(self): super().__init__() def __del__(self): self.wait() def run(self): self.messagetrigger.emit('子线程开始') time.sleep(2) self.messagetrigger.emit('子线程结束') def callback(msg): print(msg) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) subthread = SubThread() subthread.messagetrigger.connect(callback) subthread.start() sys.exit(app.exec_())

以上就是本文的全部内容了,希望对大家学习python能够有所帮助