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 18 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
python遍历类中所有成员的方法
Mar 18 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
python实现识别相似图片小结
Feb 22 Python
django主动抛出403异常的方法详解
Jan 04 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
python爬虫容易学吗
Jun 02 Python
聊聊python中的循环遍历
Sep 07 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使之能同时支持GIF和JPEG
2006/10/09 PHP
建立文件交换功能的脚本(二)
2006/10/09 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHP缓冲区用法总结
2016/02/14 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
利用js对象弹出一个层
2008/03/26 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
执行iframe中的javascript方法
2008/10/07 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
实习教师自我鉴定
2013/12/12 职场文书
推荐信范文大全
2015/03/27 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫