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基础教程之基本内置数据类型介绍
Feb 20 Python
python多进程操作实例
Nov 21 Python
python访问抓取网页常用命令总结
Apr 11 Python
Python实现输出某区间范围内全部素数的方法
May 02 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
使用Pandas对数据进行筛选和排序的实现
Jul 29 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
Python基础教程之输入输出和运算符
Jul 26 Python
python 实现端口扫描工具
Dec 18 Python
python excel和yaml文件的读取封装
Jan 12 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+SqlServer实现分页显示
2006/10/09 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
vue-router跳转页面的方法
2017/02/09 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
Python实现二维数组输出为图片
2018/04/03 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
Python递归函数实例讲解
2019/02/27 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
悬挂训练绳:TRX
2017/12/14 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
园长自我鉴定
2013/10/06 职场文书
厂长岗位职责
2014/02/19 职场文书
公司开业致辞
2015/07/29 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js