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转换字符串为摩尔斯电码的方法
Jul 06 Python
利用python获取Ping结果示例代码
Jul 06 Python
python中学习K-Means和图片压缩
Nov 20 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
numpy.transpose对三维数组的转置方法
Apr 17 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
使用python制作一个解压缩软件
Nov 13 Python
Python笔记之代理模式
Nov 20 Python
Python定义一个函数的方法
Jun 15 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
python GUI计算器的实现
Oct 09 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 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模板函数 正则实现代码
2012/10/15 PHP
php中chdir()函数用法实例
2014/11/13 PHP
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
python 处理string到hex脚本的方法
2018/10/26 Python
pyspark 随机森林的实现
2020/04/24 Python
Python调用C/C++的方法解析
2020/08/05 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
美国创意之家:BulbHead
2017/07/12 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
活动总结新闻稿
2014/08/30 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
2015年招聘工作总结
2014/12/12 职场文书
初中班干部工作总结
2015/08/10 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
解决 redis 无法远程连接
2022/05/15 Redis
python+opencv实现目标跟踪过程
2022/06/21 Python