PyQt5桌面应用开发(15):界面动画

本文介绍了PyQt5的动画框架,包括QPropertyAnimation用于改变控件属性的动画,以及QAnimationGroup用于组合多个动画。通过示例代码展示了如何使用QPropertyAnimation改变按钮的位置,并解释了属性动画的定义和插值过程。此外,还提到了QSequentialAnimationGroup和QParallelAnimationGroup的使用,以及自定义插值函数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyQt5桌面应用系列

界面动画

从所受教育和时间体验而言,我对界面动画没有什么感觉、也不太喜欢。但是业界老大告诉我,能用动画就用动画,不能用动画的用图片,不能用图片的用条目文字,最后的选择才是公式。

其实要看对象是谁。如果设计的软件用户,其注意力非常需要被吸引,而且他们的注意力是非常有限的,所以动画是非常有必要的。如果是开发者,那么动画就是浪费时间,因为他们的注意力是非常集中的,而且他们的注意力是可以被控制的,所以动画是非常不必要的。

好的,人身攻击的话就到此为止。我们下面来看看动画的实现,秃子嘛,除了coding什么都不会,那就好好coding,哪些伤身体的事情(泡吧、喝酒……)就交给别人去做吧。

PyQt5的动画框架

PyQt5的动画框架是QAbstractAnimation,它是一个抽象类,不能直接使用,需要使用它的子类。它的类结构如下:

  • QAbstractAnimation:抽象动画,是所有动画的基类,不能直接使用。
    • QVariantAnimation:值动画,用于改变控件的属性,比如改变控件的位置、大小、颜色等。
      • QPropertyAnimation:属性动画,用于改变控件的属性,比如改变控件的位置、大小、颜色等。
    • QAnimationGroup:动画组,可以包含多个动画,可以包含子动画组。
      • QSequentialAnimationGroup:顺序动画组,按照添加的顺序依次执行动画。
      • QParallelAnimationGroup:并行动画组,所有动画一起执行。

我们常用的,就是三个子类。

QPropertyAnimation

这个类的作用就是在一个Qt属性上定义一段动画。比如,我们可以在一个按钮上定义一个动画,让它的位置从(0, 0)移动到(100, 100)
。那么这里的属性就是按钮的位置,动画的起始值是(0, 0),结束值是(100, 100)
。这个属性在PyQt5里面定义的方式是采用@pyqtProperty(type signiture)@property_name.setter
函数修饰语法。前者定义了这个属性的取值和名称(就是python函数的名称),后者定义了赋值函数。采用这个方法唯一的要求,就是这个对象是QObject的子类。对于哪些不是QObject的对象,我们要额外定义一个QObject的子类,然后通过某种方式在赋值函数中将这个值传递给我们的对象,去更新对象的状态。

当我们定义好了属性之后,我们就可以使用QPropertyAnimation来定义动画了。

from PyQt5.QtCore import QPropertyAnimation, QRect
from PyQt5.QtWidgets import QPushButton

but = QPushButton("Animation")
animation = QPropertyAnimation(but, b'geometry', parent=None)

animation.setStartValue(QRect(0, 0, 100, 30))
animation.setEndValue(QRect(250, 250, 100, 30))
animation.setDuration(3000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大福是小强

除非你钱多烧得慌……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值