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获取豆瓣电影简介代码分享
Jan 16 Python
详解在Python程序中自定义异常的方法
Oct 16 Python
Python编码爬坑指南(必看)
Jun 10 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
python实现人人自动回复、抢沙发功能
Jun 08 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
python实现简单http服务器功能
Sep 17 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
Python: 传递列表副本方式
Dec 19 Python
你需要掌握的20个Python常用技巧
Feb 28 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往windows中添加用户
2006/12/06 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
基于php-fpm的配置详解
2013/06/03 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
解决pip install psycopg2出错问题
2020/07/09 Python
STP的判定过程
2012/10/01 面试题
《晚上的太阳》教学反思
2014/04/23 职场文书
读书活动总结
2014/04/28 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
python中使用redis用法详解
2022/12/24 Redis