利用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脚本
Sep 01 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python输入二维数组方法
Apr 13 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
Python基于whois模块简单识别网站域名及所有者的方法
Apr 23 Python
Python之用户输入的实例
Jun 22 Python
OpenCV 边缘检测
Jul 10 Python
Django 拆分model和view的实现方法
Aug 16 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 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
php Ajax乱码
2008/04/09 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
JS前端加密算法示例
2016/12/22 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
浅谈React组件之性能优化
2018/03/02 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
Python 元类使用说明
2009/12/18 Python
python解析html开发库pyquery使用方法
2014/02/07 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
delegate与普通函数的区别
2014/01/22 面试题
拾金不昧表扬信范文
2014/01/11 职场文书
主题酒店策划书
2014/01/28 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
2015年人事科工作总结
2015/04/28 职场文书
地道战观后感400字
2015/06/04 职场文书
老干部座谈会主持词
2015/07/03 职场文书
祝酒词范文
2015/08/12 职场文书
56句经典英文座右铭
2019/08/09 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS