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中SocketServer模块处理网络请求的用法
Jun 28 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
python实现图片九宫格分割
Mar 07 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
Python timer定时器两种常用方法解析
Jan 20 Python
python使用PIL剪切和拼接图片
Mar 23 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
python实现将中文日期转换为数字日期
Jul 14 Python
Python 操作 MySQL数据库
Sep 18 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
使用python绘制横竖条形图
Apr 21 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
第八节--访问方式
2006/11/16 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
一个简单的php路由类
2016/05/29 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
python3生成随机数实例
2014/10/20 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python计算列表内各元素的个数实例
2018/06/29 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python关于调用函数外的变量实例
2019/12/26 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
如何基于python实现不邻接植花
2020/05/01 Python
详解python中的异常捕获
2020/12/15 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
医药类个人求职的自我评价
2014/02/12 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
工程售后服务方案
2014/06/08 职场文书
建筑安全责任书范本
2014/07/24 职场文书
出售房屋协议书范本
2014/10/06 职场文书
股东大会通知
2015/04/24 职场文书
2015大一新生军训感言
2015/08/01 职场文书