pyqt5 多线程QThread自学记录

news2024/12/27 10:30:24

pyqt5多线程QThread自学记录

在编写qt的时候不加入多线程,运行程序往往会导致主进程卡死,比如执行下载某视频或者其他执行比较耗时的程序,泛滥了博客,就是没有理解怎么进行槽函数的关联和传递的
经过长时间的攻克,终于胜利记录如下
1.在qt中普通的槽函数关联

self.pushButton.clicked.connect(self.print)
def print(self)
	print("我被点击了。。。")

或者

# 需要引入 pyqtSlot 库函数
from PyQt5.QtCore import pyqtSlot

@pyqtSlot() #装饰器,此函数没有connect直接通过装饰器初始化连接槽函数
def on_pushButton_clicked(self)
	print("我点击了")

这样的连接槽函数,在我们程序运行耗时较长就会导致我们主进程卡死,同时也不能操作qt其他的小部件或者程序,所以就要使用到多线程,这里的多线程不是thread,threading,而是qt提供的QThread
2.如何使用QThread呢,首先我们要明白qt中自定义信号,通过鼠标点击发送事件

在这里插入图片描述
在这里插入图片描述

import time
from PyQt5.QtCore import QThread, pyqtSignal
# 自定义一个线程类继承QThread
class Puth_Thread(QThread):
    #自定义信号声明
    signal = pyqtSignal(str)

    # 带一个参数data
    def __init__(self,data,parent=None):
        super(Puth_Thread, self).__init__(parent)

	# 重写run函数,这个run函数就是我们的子线程需要执行的内容
    def run(self):
        for i in range(data):
            time.sleep(1)
            #通过emit发射自定义信号,同时向主程序发送一个i的参数
            self.signal.emit(str(i))
             # 注意这里与signal = pyqtSignal(str)中的类型相同

我们主程序导入Puth_Thread

# 主程序pushButton连接槽函数start
self.pushButton.clicked.connect(self.start)
# 定义槽函数
def start(self):
	# 调用Puth_Thread 并传递参数
	self.Push =Puth_Thread(100)
	# 线程连接接受函数receive
	self.Push.signal.connect(self.receive)
	# 启动线程
	self.push.start()
# 接收线程传来的事件 run函数i==msg接收
def receive(self,msg):
	print(msg)
	# 输出到textBrowser
	self.textBrowser.setText(str(msg))
	
	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/918616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【附安装包】Dynaform 5.9.4安装教程

DYNAFORM是一款用于板料成形数值模拟的专用软件,是LS-DYNA求解器与ETA/FEMB前后处理器的完美结合,包含BSE、DFE、Formability三个大模块,几乎涵盖冲压模模面设计的所有要素,包括:定最佳冲压方向、坯料的设计、工艺补充…

界面设计软件都有哪些?推荐这7款

本文总结了7种“知名”软件界面设计工具,建议您尝试各种选择,以找到最适合您的UI设计工具。 对于UI设计师来说,应用程序的界面设计和制作是最常见的。面对设计师的需求,市场上出现了各种各样的软件界面设计工具,百花齐…

国标GB28181视频平台EasyGBS国标平台无法正常启动的问题解决方案

EasyGBS国标视频云服务是基于国标GB/T28181协议的视频能力平台,可实现的视频功能包括:实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发&#…

4-4 Representing text Exercise

本文所用资料下载 一. Representing text Let’s load Jane Austen’s Pride and Prejudice. We first split our text into a list of lines and pick an arbitrary line to focus on: with open(D:jane-austen/1342-0.txt, encodingutf8) as f:text f.read() lines text.…

UE4与pycharm联合仿真的调试问题及一些仿真经验

文章目录 ue4与pycharm联合仿真的调试问题前言ue4端的debug过程pycharm端 一些仿真经验小结 ue4与pycharm联合仿真的调试问题 前言 因为在实验中我需要用到py代码输出控制信息给到ue4中,并且希望看到py端和ue端分别在运行过程中的输出以及debug调试。所以&#xf…

uniapp打包ios

转载:如何将应用程序发布到 App Store_憧憬blog的博客-CSDN博客 憧憬blog主页 在强者的眼中,没有最好,只有更好。我们是移动开发领域的优质创作者,同时也是阿里云专家博主。 ✨ 关注我们的主页,探索iOS开发的无限可能&…

Mysql数据库迁移到达梦DM

因需求,原本使用的是mysql数据库,现要改为达梦数据库,顾记录迁移过程。 目录 一、下载DM连接工具https://www.dameng.com 二、迁移数据 三、迁移遇到的问题 一、下载DM连接工具https://www.dameng.com 下载安装好,会有如下图工…

8.23作业

设计一个Per类&#xff0c;类中包含私有成员&#xff1a;姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员&#xff1a;成绩、Per类对象 p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>u…

Ansible学习笔记(二)

3.ansible的使用示例&#xff08;playbook&#xff09; 1.创建mysql 账户和mysql 组的 playbook ---#create mysql user and group - hosts: allremote_user: roottasks:- name: create groupgroup: namemysql systemyes gid306- name: create useruser: namemysql systemyes…

学习左耳听风栏目90天——第八天 8/90(学习左耳朵耗子的工匠精神,对技术的热爱)【答疑解惑:渴望、热情和选择】

答疑解惑&#xff1a;渴望、热情和选择 如何抽出时间学习&#xff1f;1. 要热爱学习&#xff0c;渴望学习&#xff0c;从学习中获取快乐 如何抽出时间学习&#xff1f; 1. 要热爱学习&#xff0c;渴望学习&#xff0c;从学习中获取快乐

同名覆盖引发的问题

父子间的赋值兼容 子类对象可以当作父类对象使用 (兼容性) 子类对象可以直接赋值给父类对象子类对象可以直接初始化父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象 当使用父类指针 (引用) 指向子类对象时 子类对象退化为父类对象只能访问父类中定义的成…

(CVPR-2023)用于步态识别的动态聚合网络

用于步态识别的动态聚合网络 paper题目&#xff1a;Dynamic Aggregated Network for Gait Recognition paper是BIT发表在CVPR 2023的工作 paper地址&#xff1a;链接 Abstract 步态识别有利于多种应用&#xff0c;包括视频监控、犯罪现场调查和社会安全等。然而&#xff0c;步…

freertos之优先级实验

优先级的介绍 优先级的取值范围是&#xff1a;0~(configMAX_PRIORITIES – 1)&#xff0c;数值越大优先级越高。 FreeRTOS会确保最高优先级的、可运行的任务&#xff0c;马上就能执行。 对于相同优先级的、可运行的任务&#xff0c;轮流执行 任务的执行顺序 对于同优先级的任…

工作流程引擎之flowable(集成springboot)

0、背景 现状&#xff1a;公司各部门业务系统有各自的工作流引擎&#xff0c;也有cross function的业务在不同系统或OA系统流转&#xff0c;没有统一的去规划布局统一的BPM解决方案&#xff0c;近期由于一个项目引发朝着整合统一的BPM方案&#xff0c;特了解一下市面上比较主流…

spring之Spring Security - 实现身份验证与授权

Spring Security - 实现身份验证与授权 标题: Spring Security - 实现身份验证与授权摘要:引言:词汇解释:详细介绍:实现基本的身份验证与授权解释概念:代码示例:注意事项: 定制化认证与授权流程解释概念:代码示例:注意事项: 集成OAuth2认证解释概念:代码示例:注意事项: 总结:参…

【微信公众号】微信公众号网页授权:

文章目录 一、添加业务域名二、前端授权获取code【1】参数说明&#xff1a;【2】静默授权与显式授权的区别&#xff1a;【3】前端获取code的代码&#xff1a; 三、后端获取openid(或unionid)【1】获取openid&#xff1a;【2】获取unionid 四、unionid与openid的区别 在微信公众…

宠物店小程序制作

随着移动互联网的快速发展&#xff0c;宠物店经营者们也纷纷意识到线上市场的潜力。通过开发一款宠物小程序&#xff0c;你可以将你的宠物店推向线上的新机遇&#xff01; 【乔拓云】是一个专业的小程序开发平台&#xff0c;它提供了一套简单易用的工具&#xff0c;帮助你快速创…

JavaSE 方法

定义&#xff1a; 程序执行的最小单元 什么时候用到方法&#xff1a;需要重复运行一段代码的时候&#xff1b; 使用方法的好处&#xff1a;提高代码的可重用性、可维护性 格式&#xff1a; // 一、最简单格式 public static void 方法名(){// 方法体 }// 二、带参数的格式…

炫我为北京轻工技师学院提供渲染私有云系统解决方案

北京轻工技师学院作始建于1964年&#xff0c;是国家级重点学校。学院开设有计算机动画制作、计算机网络应用、电气自动化设备安装与维修、电子技术应用、工业机器人应用与维护等16个专业&#xff0c;本次项目的交付实施涉及该学院的一个重要项目。 ▲北京轻工技师学院 图源网…

【SpringSecurity】五、UserDetails接口和UserDetailsService接口

文章目录 1、SpringSecurity原理2、UserDetails接口3、UserDetailService接口4、权限配置 1、SpringSecurity原理 Spring Security是做安全访问控制&#xff0c;对所有进入系统的请求进行拦截&#xff0c;并做校验&#xff0c;这可以通过Filter或者AOP实现&#xff0c;Spring …