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使用datetime模块计算各种时间间隔的方法
Mar 24 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
python pycharm的安装及其使用
Oct 11 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
win10系统下python3安装及pip换源和使用教程
Jan 06 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
python中format函数如何使用
Jun 22 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
php正则修正符用法实例详解
2016/12/29 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
js获取内联样式的方法
2015/01/27 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python MySQLdb Linux下安装笔记
2015/05/09 Python
python字符串中的单双引
2017/02/16 Python
python实现飞机大战游戏
2020/10/26 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
python实例化对象的具体方法
2020/06/17 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
final, finally, finalize的区别
2012/03/01 面试题
实习生体会的自我评价范文
2013/11/28 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
学习考察心得体会
2014/09/04 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
老乡会致辞
2015/07/28 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript