PySide(PyQt)的QPropertyAnimation(属性动画)

学不完,根本学不完:(,感觉逐渐陷入了学习深渊。。。

        QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果,比如移动、缩放或改变透明度等。

基本概念
        QPropertyAnimation 是 Qt 动画框架的一部分,它能够让你在一定的时间内渐变地改变一个对象的属性。比如,你可以用它来改变一个窗口的位置、大小,或者改变一个按钮的颜色。

主要功能
        属性动画:QPropertyAnimation 允许你定义要动画化的属性,并设置它的起始值和结束值。
        时间轴:你可以设置动画的持续时间,并决定动画的开始、结束以及加速、减速方式(比如线性、加速、减速)。
        缓动曲线:可以使用不同的缓动曲线(easing curve)来控制动画的变化方式。
        目标对象:动画可以作用于任何支持属性的 Qt 对象。


常用方法
        构造函数:

QPropertyAnimation(target, property_name)

target 是要应用动画的对象。
property_name 是要动画化的属性名称(例如 "pos" 或 "size")。

        设置动画范围: 

animation.setStartValue(start_value)
animation.setEndValue(end_value)

start_value 是动画开始时属性的值。
end_value 是动画结束时属性的值。


设置动画持续时间:

animation.setDuration(duration)

duration 是动画的持续时间,单位是毫秒。


设置缓动曲线:

​​​​​​​animation.setEasingCurve(easing_curve)

easing_curve 是缓动曲线的类型,例如 QEasingCurve.Linear, QEasingCurve.InOutQuad 等。


启动动画:

animation.start()

动画更新:
QPropertyAnimation 还支持更新动画的值,比如你可以设置动画的播放进度或者暂停、停止动画。例如:

设置动画的播放进度:

animation.setCurrentTime(1000)  # 设置动画到 1000 毫秒的位置

暂停播放

animation.pause()

 恢复播放

animation.resume()

停止播放 

animation.stop()  # 停止动画

示例代码,展示了如何使用 QPropertyAnimation 来动画化一个小部件的宽度:

from PyQt5.QtCore import QPropertyAnimation, QSize, QEasingCurve
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget, QLabelapp = QApplication([])# 创建一个窗口
window = QWidget()
window.setGeometry(100, 100, 800, 300)
layout = QVBoxLayout(window)# 创建一个标签
label = QLabel("Animate Me")
label.setStyleSheet('border:2px solid #b6b6b6;background-color:#e0e0e0;')
label.setFixedHeight(40)  # 固定按钮的高度
layout.addWidget(label)# 创建 QPropertyAnimation 对象
animation = QPropertyAnimation(label, b"size")# 设置动画的起始值和结束值
start_size = label.size()
end_size = QSize(300, label.height())  # 目标宽度为300,高度保持不变
animation.setStartValue(start_size)
animation.setEndValue(end_size)# 设置动画持续时间(2000 毫秒即 2 秒)
animation.setDuration(2000)# 设置缓动曲线为线性
animation.setEasingCurve(QEasingCurve.Linear)# 启动动画
animation.start()window.show()
app.exec_()

 一些其他的设置:

设置动画的目标对象和属性:

animation.setTargetObject(target)
animation.setPropertyName(property_name)


动画的进度和状态:

animation.currentTime(): 获取动画当前时间。
animation.currentValue(): 获取动画当前属性值。
animation.state(): 获取动画状态,如 QAbstractAnimation.Running 或 QAbstractAnimation.Stopped。

注意事项

  1. 属性名称:确保你动画化的属性是目标对象支持的属性。如果属性名称不正确,动画不会按预期工作。

  2. 线程安全QPropertyAnimation 通常在主线程中运行,确保不要在多个线程中同时操作同一个动画对象。

  3. 动画回调:你可以连接动画的信号(如 finished() 信号)来执行动画完成后的操作:

    animation.finished.connect(lambda: print("Animation finished!"))
    

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

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

相关文章

GPT5发布时间预测,即将到来的GPT5

GPT-5:未来的展望与功能预测 随着人工智能技术的飞速发展,生成式预训练模型(GPT)已经成为自然语言处理领域的核心技术。从 GPT-1 到目前的 GPT-4,每一代模型都带来了显著的进步和变革。那么,GPT-5 的到来将…

【环境搭建问题】linux服务器安装conda并创建虚拟环境

1.检查有没有conda 首先看root文件夹下有没有anaconda或者conda 没有的话就要先下载安装conda: https://repo.anaconda.com/archive/index.html 在这个链接下找自己需要的。服务器一般为linux,所以我这里选择的是: 2.安装conda 下载安装…

自动控制:PID控制器参数对控制性能的影响

自动控制:PID控制器参数对控制性能的影响 PID控制器是工业控制领域中最常用的控制算法之一。PID控制器通过调节比例、积分(I)、微分(D)三个参数,使系统达到预期的控制效果。本文将详细讨论PID控制器的三个参数对控制性能的影响,并给出一些实…

Python脚本:使用PyPDF2给一个PDF添加上页数/总页数标签

一、实现代码 import PyPDF2 from PyPDF2 import PdfWriter from PyPDF2.generic import AnnotationBuilder# 指定输入和输出pdf pdf_path rC:\Users\ASUS\Desktop\temp\xxxx.pdf out_path rC:\Users\ASUS\Desktop\temp\xxxx2.pdf# 创建 PdfWriter 对象 writer PdfWriter()…

【管理咨询宝藏148】顶级咨询公司大型线下连锁门店客户生命周期规划方案

【管理咨询宝藏148】顶级咨询公司大型线下连锁门店客户生命周期规划方案 【格式】PDF版本 【关键词】零售数字化、客户生命周期、客户画像 【核心观点】 - 在多年的行业研究积累过程中,将每个行业中具有典型代表性的用户维度进行了总结。本项目选择用户服务的标杆企…

视频监控管理平台LntonAIServer智能视频监控平台在工业排污检测中的应用

随着工业化的不断发展,环境污染问题日益严重。为了保护生态环境,各国政府纷纷出台相关政策,对工业排污进行严格监管。然而,传统的排污检测方法往往耗时耗力,且难以实现实时监控。因此,如何提高工业排污检测…

Graph-RAG:知识图谱与大模型的融合

在数字化的浪潮中,知识的累积已非线性增长,以指数级的速度膨胀。我们站在一个信息过载的十字路口,迫切需要一种能力,能够穿透数据的迷雾,捕捉知识的精髓。本文将揭示 Graph-RAG 的神秘面纱,这是一种突破传统…

FBMM: Making Memory Management Extensible With Filesystems——论文泛读

ATC 2024 Paper 论文阅读笔记整理 问题 CXL这样的新内存技术实现了多种内存配置,如分层内存、远内存和内存处理。为了支持这些新的硬件配置,需要对操作系统进行大量修改。例如,Meta的TPP内核补丁对NUMA和页面回收策略进行了更改&#xff0c…

PMP证书含金量高吗?值得考吗?

值啊,我考过了,PMP 是项目管理岗位的敲门砖,很多企业都写明了持有PMP 证书的优先,而且学完这个知识体系,对我的能力提升确实有帮助,还是值得的。 一、为什么值得 这个证书就是基础知识,项目管…

系统架构设计师 - 知识产权与标准化

知识产权与标准化 知识产权与标准化(3分)保护范围与对象 ★ ★ ★ ★法律法规 保护期限 ★ ★知识产权人确定 ★ ★ ★ ★侵权判断 ★ ★ ★ ★标准化(了解)★标准的分类标准的编号 大家好呀!我是小笙,本章…

数据库实验:数据库安全性

一、实验目的: 1、掌握SQL SERVER的身份验证方式。 2、掌握SQL SERVER的权限。 3、掌握给数据库的用户和角色赋予权限和从用户和角色收回权限。 4、掌握GRANT,REVOKE,DENY的用法。 二、实验内容: 1、将SQL SERVER服务器的安全…

爬虫-通过几个例子来说明并发以及多线程

并发 什么是并发?并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 嗯,字认识&#…

滞回比较器工作原理,应用,TINA仿真

滞回比较器 滞回比较器的主要应用是增加滞回控制,让其对微小的变化不那么敏感,增强抗干扰能力,避免由噪声引起的不稳定状态,通常用于噪声环境下的阈值检测以及信号调理。根据不同需求,滞回比较器还可以设计成开漏极输出…

Redis的使用场景——热点数据缓存

热点数据缓存 Redis的使用场景——热点数据的缓存 1.1 什么是缓存 为了把一些经常访问的数据,放入缓存中以减少对数据库的访问效率,从而减少数据库的压力,提高程序的性能。【在内存中存储】 1.2 缓存的原理 查询缓存中是否存在对应的数据如…

[240728] Wikidata 介绍 | 微软与 Lumen 合作提升人工智能算力

目录 Wikidata 介绍微软与 Lumen 合作提升人工智能算力 Wikidata 介绍 中文: 文言: 粤语: 来源: https://www.wikidata.org/wiki/Wikidata:Introduction/zh 微软与 Lumen 合作提升人工智能算力 为了满足人工智能工作负载不断增长的需求&am…

从零开始写 Docker(十九)---增加 cgroup v2 支持

本文为从零开始写 Docker 系列第十九篇,添加对 cgroup v2 的支持。 完整代码见:https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识: 核心原理:深入理解 Docker 核心原理&#xff1a…

微软蓝屏”事件暴露了网络安全哪些问题?

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

cadence SPB17.4 - allegro - 设置不同网络之间的距离规则

文章目录 cadence SPB17.4 - allegro - 设置不同网络之间的距离规则概述笔记END cadence SPB17.4 - allegro - 设置不同网络之间的距离规则 概述 插座进来的管脚,可能带来高压(有可能用户接错,或者出现浪涌,或者做ESD静电测试&a…

SpringBoot热部署重启关闭(DevTools)

一、DevTools依赖 1、DevTools简介 在Spring Boot项目中,spring-boot-devtools模块提供了多种开发时的便利功能,其中最显著的是restart和livereload特性,它们分别用于应用代码的热重启和前端资源的即时重载。 devtools依赖: &l…

如何在调整节拍时间的过程中保持生产流程的稳定性?

在快节奏的工业生产领域,节拍时间(Takt Time)——即完成一个完整产品所需的标准时间,是维持生产效率和流程稳定性的关键指标。然而,市场需求的波动、技术升级或是生产线的微调,都可能要求我们对节拍时间进行…