利用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简单实现自动删除目录下空文件夹的方法
Aug 29 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
python之生产者消费者模型实现详解
Jul 27 Python
Python Collatz序列实现过程解析
Oct 12 Python
python向图片里添加文字
Nov 26 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 Python
Python实现简单的猜单词小游戏
Oct 28 Python
python中time.ctime()实例用法
Feb 03 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 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
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python处理session的方法整理
2019/08/29 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
tensorflow多维张量计算实例
2020/02/11 Python
python绘制玫瑰的实现代码
2020/03/02 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
《愚公移山》教学反思
2014/02/20 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
吨的认识教学反思
2014/04/27 职场文书
关爱老人标语
2014/06/21 职场文书
街道社区活动报告
2015/02/05 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS