PyQt使用QPropertyAnimation开发简单动画


Posted in Python onApril 02, 2020

QPropertyAnimation是PyQt5.QtCore模块提供的动画设计类,使用该类可以针对PyQt的界面对象进行动画播放,如果要针对一个指定对象进行动画播放,包括如下步骤:

一、创建动画对象

创建时要确认需要进行动画处理的对象以及对象的变化属性,通过:
QPropertyAnimation(QObject target,QByteArray propertyName,QObject parent)来创建动画对象:

其中:
1、target为准备进行动画动作的对象,可以不填,不填时动画对象创建后要使用setTargetObject来设置动作对象;
2、propertyName为动作对象变更的属性,可以不填,不填时动画对象创建并设置动画动作的对象要使用setPropertyName来设置变更的属性;
3、parent为动作对象的父对象,可以不填,不填默认为None。

二、指定动作的初始状态

动作的初始状态就是指动作对象变更的属性的起始值,如果不设置就是对象的当前值。要设置初始值,使用:
setStartValue(属性初始值)

三、指定动作的最终状态

动作的最终状态就是指动作对象动画结束后属性的值,要设置属性最终值,使用:
setEndValue(属性最终值)

四、指定动画时长

动画时长就是从初始状态变更为最终状态的时长,要设置动画时长使用:
setDuration(time)
单位为毫秒。

五、进行动画播放

使用start()进行动画播放。

案例

要将界面上一个叫testButton的按钮的起始位置向x轴和y轴方向各挪动一10个像素,并用动画形式展现挪动过程,相关动画的代码如下:

def startAnimation(self):
    animation = QPropertyAnimation(self.testButton,b"geometry",self)
    #animation.setTargetObject(self.testButton)
    #animation.setPropertyName(b"geometry")
    startpos = self.testButton.geometry()
    newpos = QRect(startpos.x()+10,startpos.y()+10,startpos.width(),startpos.height())

    #animation.setStartValue(startpos)
    animation.setEndValue(newpos)
    animation.setDuration(1000)
    animation.start()

注意调用方法中的属性名是二进制字符串,因此加"b",而看了网上很多案例属性前都没有加"b",但在PyQt5.13版本中无法正常执行,其他版本老猿不能确认。

关于QPropertyAnimation类更多的内容大家可以参考《pyqt5中动画的使用》。

到此这篇关于PyQt使用QPropertyAnimation开发简单动画的文章就介绍到这了,更多相关PyQt QPropertyAnimation动画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
教大家使用Python SqlAlchemy
Feb 12 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Python requests模块session代码实例
Apr 14 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Jun 08 Python
python topk()函数求最大和最小值实例
Apr 02 #Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
Apr 02 #Python
Python如何通过百度翻译API实现翻译功能
Apr 02 #Python
Python基于百度AI实现OCR文字识别
Apr 02 #Python
python 穷举指定长度的密码例子
Apr 02 #Python
python3安装OCR识别库tesserocr过程图解
Apr 02 #Python
python简单的三元一次方程求解实例
Apr 02 #Python
You might like
php similar_text()函数的定义和用法
2016/05/12 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
可输入的下拉框
2006/06/19 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
python 性能提升的几种方法
2016/07/15 Python
Python continue继续循环用法总结
2018/06/10 Python
pybind11在Windows下的使用教程
2019/07/04 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Python Collatz序列实现过程解析
2019/10/12 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
数据库笔试题
2013/05/09 面试题
办公室前台的岗位职责
2013/12/20 职场文书
创业女性典型材料
2014/05/02 职场文书
党员作风建设自查报告
2014/10/23 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS