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

  • 相关阅读:
    ASP.NET 2.0 用户注册控件的密码验证问题
    编程使用GridView,DataList的模版列
    在您的站点上添加 Windows Live Favourites 收藏入口
    推荐个很好玩的开源项目Ascii Generator dotNET
    Castle ActiveRecord 在Web项目和WinForm项目中
    HTML解析器项目进展和新的构思
    SilverLight 的跨域跨域访问
    SQL 语句之Join复习
    【笔记】提高中文分词准确性和效率的方法
    ASP.NET 动态加载控件激发事件的问题
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11931692.html
Copyright © 2011-2022 走看看