利用PyQt中的QThread类实现多线程


Posted in Python onFebruary 18, 2020
  • 用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()函数,即可开启新线程

【重点说明】

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能够有所帮助

Python 相关文章推荐
浅析Python中将单词首字母大写的capitalize()方法
May 18 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
Python 3.8新特征之asyncio REPL
May 28 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
Python使用qrcode二维码库生成二维码方法详解
Feb 17 Python
Python post请求实现代码实例
Feb 28 Python
PyTorch的Debug指南
May 07 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 #Python
Python识别html主要文本框过程解析
Feb 18 #Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 #Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 #Python
tensorflow 分类损失函数使用小记
Feb 18 #Python
python如何把字符串类型list转换成list
Feb 18 #Python
python计算波峰波谷值的方法(极值点)
Feb 18 #Python
You might like
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
Python装饰器使用示例及实际应用例子
2015/03/06 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
python实现k-means聚类算法
2018/02/23 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
python标准库os库的函数介绍
2020/02/12 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
在keras里实现自定义上采样层
2020/06/28 Python
python实现excel公式格式化的示例代码
2020/12/23 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
Nike香港官网:Nike HK
2019/03/23 全球购物
六一节目主持词
2014/04/01 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
师德师风建设方案
2014/05/08 职场文书
父亲节活动策划方案
2014/08/24 职场文书
委托书的写法
2014/08/30 职场文书
邀请函样本
2015/02/02 职场文书
预备党员自我评价范文
2015/03/04 职场文书
公司年会主持词范文!
2019/05/07 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python