zoukankan      html  css  js  c++  java
  • PyQt学习随笔:使用QPropertyAnimation开发简单动画

    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中动画的使用》。


    博客地址:https://blog.csdn.net/LaoYuanPython

    老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

  • 相关阅读:
    MVC4.0 上传Excel并存入数据库
    解决汉化pycharme之后设置打不开的问题
    初学JavaScript正则表达式(一)
    phpstudy配置虚拟域名
    设置了相对定位relative之后,改变top值,如何去掉多余空白?
    git clone克隆代码显示“无权限或者确认存储库是否存在”
    xampp配置虚拟域名
    PHP连接Navicat For Mysql并取得数据
    Vue中怎样使用swiper组件?
    Vue项目开发前的准备工作,node的安装,vue-cli的安装
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11931692.html
Copyright © 2011-2022 走看看