时间:2021-05-22
利用QThread类实现多线程的方法
1,新建一个python类,继承自QThread
from PyQt5.QtCore import QThreadclass SubThread(QThread):2,重写__init__(),__del__()和run()函数
from PyQt5.QtCore import QThreadclass SubThread(QThread): def __init__(self): super().__init__() # 以下加入需要的代码 def __del__(self): self.wait() def run(self): # 以下加入子线程执行的代码3,将继承自QThread类实例化,然后调用实例对象的start()函数,即可开启新线程
【重点说明】
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, pyqtSignalclass 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, QObjectclass 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, QObjectfrom PyQt5 import QtWidgetsclass 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能够有所帮助
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
PyQt5简单多线程信号与槽的使用最简单的多线程使用方法是利用QThread函数,展示QThread函数和信号简单结合的方法importsysfromPyQt5
PyQt中的线程类QtCore.QThread,使用时继承QThread类启动界面的线程暂称为UI线程。界面执行命令时都在自己的UI线程中。如果在UI线程中执行
QThread是Qt的线程类中最核心的底层类。由于PyQt的的跨平台特性,QThread要隐藏所有与平台相关的代码要使用的QThread开始一个线程,可以创建它
本文实例为大家分享了PyQt5实现暗黑风格的计时器的具体代码,供大家参考,具体内容如下主要是学习多线程知识,使用的是QTime(),但是似乎用QThread()
在PyQt5中使用QThread的时候,要注意把所有QThread的对象在主类中的init(或者放在所有类函数的外面)中进行实例化,不然可能在多个QThread