pyQt处理任务等待动画

写了一个显示Qt正在处理内容的等待动画,任务另开一个线程执行,执行完后自动关闭动画

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QApplication, QMessageBox, QDialog, QVBoxLayout
from PyQt5.QtCore import pyqtSignal, QTimer, QThread, QObject, Qt
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QLabel
from PyQt5.QtGui import QMovie, QIconclass WorkerThread(QThread):finished = pyqtSignal(str)def __init__(self, task, *args):super().__init__()self.task = taskself.args = argsdef run(self):# 执行任务,并传递参数result = self.task(*self.args)self.finished.emit(result)class GifPlayer(QDialog):def __init__(self, parent, gif_path, task, *args):super().__init__(parent, Qt.FramelessWindowHint | Qt.Tool)  # 设置窗口标志self.setAttribute(Qt.WA_TranslucentBackground)  # 设置窗口背景透明# 设置样式表来确保QLabel的背景透明self.setStyleSheet("QLabel { background-color: transparent; }")self.setParent(parent)self.label = QLabel(self)layout = QVBoxLayout(self)layout.addWidget(self.label)self.movie = QMovie(gif_path)self.label.setMovie(self.movie)self.label.show()self.worker_thread = WorkerThread(task, *args)self.worker_thread.finished.connect(self.on_task_finished)def start_animation(self):self.label.show()self.movie.start()self.worker_thread.start()  # 开始线程def stop_animation(self):self.movie.stop()def on_task_finished(self, result):self.movie.stop()# dosomething....self.reject()

调用演示:

gif_player = GifPlayer(self, './waiting/waiting.gif', self.ReadAndSetText, filename)  #  './waiting/waiting.gif'这个是gif的路径,self.ReadAndSetText这个是我要处理的任务函数
gif_player.start_animation()
gif_player.exec_()

效果展示:
在这里插入图片描述

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

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

相关文章

理解消息队列:队列与主题的区别

理解消息队列:队列与主题的区别 如果你研究过多种消息队列产品,可能会发现每种消息队列都有自己的一套消息模型,像队列(Queue)、主题(Topic)或分区(Partition)这些名词概念在不同的消息队列模型中含义各异。这是因为没有统一的标准。尽管曾有国际组织尝试制定过消息相…

springboot 作为客户端接收服务端的 tcp 长连接数据,并实现自定义结束符,解决 粘包 半包 问题

博主最近的项目对接了部分硬件设备,其中有的设备只支持tcp长连接方式传输数据,博主项目系统平台作为客户端发起tcp请求到设备,设备接收到请求后作为服务端保持连接并持续发送数据到系统平台。 1.依赖引入 连接使用了netty,如果项…

CPU占用率很高,相应很慢排查思路

获取线程状态 通过top -c命令可以动态显示进程及其占用资源的排行榜 可以看到,CPU占用率100%的PID是80972,定位到该进程之后,我们再从线程的dump日志中去定位. 使用top -H -p 80972命令查找到该进程中消耗CPU最多的线程,从下面的…

Apose.Words 常用对象详解

系列文章目录 文章目录 系列文章目录前言一、基础对象1. moveToBookmark 前言 本文介绍 Apose.Words 的常用对象的含义及使用方法。 一、基础对象 1. moveToBookmark 将指针移动到书签位置。 moveToBookmark(String bookmarkName, boolean isStart, boolean isAfter) book…

国产可视化爬虫助力AI大模型训练:精准爬取汉语词典

大语言模型,可以生成流畅对话的会话聊天机器人、通畅起草文章的内容生成器。在炫酷技术的背后,数据、算力、算法,被视作生成式AI的三个核心要素。由此可见,高质量的训练数据对于AI算法的准确性至关重要。 如何获得高质量的训练数…

【方法】如何禁止查看压缩包里的内容?

使用压缩文件,可以让文件更方便存储和传输,那对于重要的文件,如何防止随意查看压缩包的内容呢?我们可以试试以下两个方法。 方法1: 最常见的便是给压缩包设置“打开密码”,这样只有通过密码才能查看文件内…

外汇天眼:PayPoint投资100万英镑,深化与Aperidata开放银行合作

PayPoint今日宣布对Aperidata Ltd进行100万英镑的投资,Aperidata是一家创新的消费者和商业信用报告及开放银行平台。 此交易将使PayPoint集团在两家公司之间现有的商业合作基础上更进一步,为包括政府、地方当局、慈善机构和住房协会在内的多个领域的客户…

uniapp tabBar app页面滚动闪屏的问题

我在做app的时候,调试tabBar页面滚动时莫名其妙的闪屏,其他页面不闪屏,可能跟新建的项目样式有关。 修改方法如下。 在pages.json中 "tabBar": {"selectedColor": "#204AFF","color": "#ccc…

PaddleOCR2.7+Qt5

章节一:Windows 下的 PIP 安装 官网安装教程地址 按照里面的教程去安装 如果使用cuda版本的还要安装tensorrt,不然后面运行demo程序的程序会报如下错。 下载TensorRT 8版本,tensorrt下载地址 章节二:编译源码 进入官网源码地址 下…

c 回调函数

java中有很多回调函数&#xff0c;其与c中的回调函数一样。c的回调函数可以理解为是某一个函数的一个参数。也可以认为是程序为其他编程者开放的一个函数。原程序运行到此处就执行此开放函数操作 #include <stdio.h> #include <stdlib.h> #include <string.h&…

使用@Value无法将配置文件的属性注入

1.错误示例 Value("${aliyun.oss.accessKeyId}") private static String accessKeyId;//用户名 原因分析 在使用Value注解进行属性注入时&#xff0c;不能将属性标记为静态的。因此&#xff0c;你需要将以下四个属性的static关键字去掉。 在使用Value注解时&#x…

通过AWR结合SQLHC对性能变低的SQL进行分析的过程

ESTDB数据库2020/4/29下午16点附近出现业务卡顿现象。 可以发现问题SQL为(SQL_ID fr0nhywcycrsa)。占问题时段数据库资源消耗的52.69%&#xff0c;通过对此SQL语句的执行效率进行分析&#xff0c;我们发现&#xff1a; 对SQL_ID fr0nhywcycrsa?进行分析&#xff0c;可以发现此…

kubernetes-PV与PVC

一、PV和PVC详解 当前&#xff0c;存储的方式和种类有很多&#xff0c;并且各种存储的参数也需要非常专业的技术人员才能够了解。在Kubernetes集群中&#xff0c;放了方便我们的使用和管理&#xff0c;Kubernetes提出了PV和PVC的概念&#xff0c;这样Kubernetes集群的管理人员就…

Java_认识String类

在 C 语言中已经涉及到字符串了&#xff0c;但是在 C 语言中要表示字符串只能使用字符数组或者字符指针&#xff0c; 可以使用标准库提 供的字符串系列函数完成大部分操作&#xff0c;但是这种将数据和操作数据方法分离开 的方式不符合面相对象的思想&#xff0c;而字符串应用又…

【C++】二维前缀和

1.题目 2.算法思路 和一维前缀和的方法类似&#xff0c;我们需要预处理一个求和矩阵&#xff0c;然后再求和。 下面是模板&#xff1a; 上面两张图片总结出来了两个公式&#xff0c;这是解决此类问题的关键。 3.代码 #include <iostream> using namespace std; #incl…

MSMG Toolkit深度Windows系统镜像文件个性定制!

MSMG Toolkit,这个听起来略显神秘的名字,在DIY电脑爱好者和系统管理员的圈子中却是大名鼎鼎。这是一款免费的系统定制工具,专为Windows操作系统量身定做,旨在帮助用户轻松移除不必要的系统组件、集成更新、添加驱动程序,以及实现无人值守安装等功能,让每一次系统安装都更…

【WP|6】WordPress 主题开发详解

WordPress主题开发是打造独特、功能强大的网站的重要途径。无论是创建全新的主题还是对现有主题进行自定义&#xff0c;掌握主题开发技能都是非常重要的。本文将详细讲解 WordPress 主题开发的基本步骤、文件结构、模板层次以及一些高级技巧&#xff0c;帮助你从零开始创建一个…

Spring Cache --学习笔记

一、概述 Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象&#xff0c;底层可以切换不同的缓存实现&#xff0c;例如&#xff1a; EHCache Caffeine Redis(常…

第三方软件测试机构进行验收测试的好处分享,需多少时间和费用?

在软件开发过程中&#xff0c;软件验收测试是不可或缺的一环。那么&#xff0c;什么是软件验收测试呢?为什么建议选择第三方软件测试机构进行验收测试呢? 软件验收测试是指在软件开发完毕后&#xff0c;由测试人员基于软件需求规格说明书和软件设计文档等材料&#xff0c;对…

扩散模型--论文分享篇

定义&#xff1a;输入文本与图像&#xff0c;生成对图像的描述。 所采用的方法&#xff1a;对比学习、基于跨注意力机制的多模态融合 基于扩散模型的方法&#xff1a;主要介绍的扩散的原理 图像生成任务介绍 GAN VAE 扩散模型 基于GAN的图像生成&#xff0c;一个生成器与判别…