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单链表的简单实现方法
Sep 23 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python中单例常用的几种实现方法总结
Oct 13 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 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
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
PHP输入流php://input介绍
2012/09/18 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
Python中atexit模块的基本使用示例
2015/07/08 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python解释器安装教程的方法步骤
2020/07/02 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
心理健康心得体会
2014/01/02 职场文书
物业管理计划书
2014/01/10 职场文书
12岁生日演讲稿
2014/05/14 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL