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之类的细节
Oct 13 Python
python抓取网页中图片并保存到本地
Dec 01 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
Random 在 Python 中的使用方法
Aug 09 Python
Python 判断奇数偶数的方法
Dec 20 Python
基于python生成器封装的协程类
Mar 20 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
使用python 将图片复制到系统剪贴中
Dec 13 Python
如何在Python项目中引入日志
May 31 Python
PyTorch device与cuda.device用法
Apr 03 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 adodb操作mysql数据库
2009/03/19 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
python打开网页和暂停实例
2014/09/30 Python
跟老齐学Python之复习if语句
2014/10/02 Python
在Django中创建第一个静态视图
2015/07/15 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
行政助理的职责
2013/11/14 职场文书
学生会个人自荐书范文
2014/02/12 职场文书
护士求职信
2014/07/05 职场文书
优秀高中学生评语
2014/12/30 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技