class QAbstractAnimation#

QAbstractAnimation 类是所有动画的基础。 更多

Inheritance diagram of PySide6.QtCore.QAbstractAnimation

继承自: QVariantAnimationQPropertyAnimationQPauseAnimationQAnimationGroupQSequentialAnimationGroupQParallelAnimationGroup

自版本4.6起引入。

概述#

属性#

  • currentLoop - 动画的当前循环

  • currentTime - 动画当前时间和进度

  • direction - 当动画处于运行状态时的方向

  • duration - 动画持续时间

  • loopCount - 动画循环次数

  • state - 动画状态

方法#

虚方法#

槽函数#

信号#

注意

此文档可能包含从C++自动翻译成Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告诉我们。

详细描述#

该类定义了所有动画功能共享的功能。通过继承此类,您可以创建自定义动画,并将其集成到其余动画框架中。

动画的进度由其当前时间(currentLoopTime())确定,该时间从动画开始(0)到结束(duration())以毫秒计算。该值在动画运行时会自动更新。它也可以通过setCurrentTime()直接设置。

动画可以处于以下三种状态之一:正在运行已停止 或者 已暂停 ——由枚举State定义。可以通过调用start()stop()pause()resume() 来改变当前状态。动画面开始时总是重置其current time。如果处于暂停状态,在恢复时将继续使用相同的当前时间。当动画被停止时,无法恢复,但将保持其当前时间(直到再次开始)。QAbstractAnimation将在其状态改变时发射stateChanged()

通过设置loopCount属性,动画可以无限循环。当动画的当前时间达到其duration() 时,它将重置当前时间并继续运行。循环次数为1(默认值)表示动画将运行一次。请注意,持续时间设置为-1表示动画将在停止前一直运行;当前时间将无限增加。当当前时间等于duration() 且动画处于最后一个循环时,动画将进入Stopped 状态,并发射finished() 信号。

QAbstractAnimation 提供了用于子类跟踪动画进度的纯虚函数:duration()updateCurrentTime()duration() 函数允许您报告动画的持续时间(如上所述)。当当前时间改变时,动画框架会调用 updateCurrentTime() 。通过重新实现此函数,您可以跟踪动画的进度。请注意,调用之间的间隔以及调用此函数的次数均未定义;尽管如此,它通常会以每秒60次更新。

通过重新实现 updateState(),您可以跟踪动画状态的变化,这对于不由时间驱动的动画特别有用。

class Direction#

此枚举描述了动画在 Running 状态下的方向。

常量

描述

QAbstractAnimation.Forward

动画的当前时间随时间增加(即从0移向结束/持续时间)。

QAbstractAnimation.Backward

动画的当前时间随时间减少(即从结束/持续时间移向0)。

另请参阅

direction

class State#

此枚举描述了动画的状态。

常量

描述

QAbstractAnimation.Stopped

动画未运行。这是 QAbstractAnimation 的初始状态,且当动画完成后,状态会重新进入。当前时间保持不变,直到调用 setCurrentTime() 或通过调用 start() 开始动画。

QAbstractAnimation.Paused

动画已暂停(即临时挂起)。调用 resume() 将恢复动画活动。

QAbstractAnimation.Running

动画正在运行。在事件循环中,QAbstractAnimation 将定期更新其当前时间,并在适当的时候调用 updateCurrentTime()

另请参阅

state() stateChanged()

class DeletionPolicy#

常量

描述

QAbstractAnimation.KeepWhenStopped

动画在停止时不会被删除。

QAbstractAnimation.DeleteWhenStopped

动画在停止时会自动删除。

注意

当使用 from __feature__ import true_property 时可以直接使用属性,否则可通过访问器函数使用。

property currentLoopᅟ: int#

此属性包含动画当前的循环。

此属性描述动画的当前循环。默认情况下,动画的循环次数为 1,因此当前循环始终为 0。如果循环次数为 2,且动画运行时间超过持续时间,它将自动回退并重新开始,当前时间 0,当前循环 1,依此类推。

当前循环发生变化时,QAbstractAnimation 将发出 currentLoopChanged() 信号。

访问函数
property currentTimeᅟ: int#

此属性包含动画的当前时间和进度。

此属性描述了动画的当前时间。您可以通过调用 setCurrentTime 来更改当前时间,或者调用 start() 并让动画运行,将当前时间自动设置为动画的进度。

动画的当前时间从 0 开始,到 totalDuration() 结束。

注意

您可以将其他属性绑定到 currentTime 上,但建议不要将其绑定。因为动画的进行会自动更新 currentTime,这会取消其绑定。

访问函数
属性direction:QAbstractAnimation.Direction#

此属性存储动画在 运行 状态时的方向。

此方向指示时间是否从 0 向动画持续时间移动,还是在调用 start() 后从持续时间的值向 0 移动。

默认情况下,此属性设置为 正向

访问函数
属性duration: int#

此属性存储动画的持续时间。

如果持续时间是 -1,则表示持续时间未定义。在这种情况下,loopCount 被忽略。

访问函数
属性loopCount: int#

此属性存储动画的循环次数。

此属性以整数形式描述动画的循环次数。默认值是 1,表示动画只运行一次然后停止。更改此值可以使得动画循环多次。值为 0 时,动画不会运行;值为 -1 时,动画会无限循环直到停止。不支持在具有未定义持续时间的动画上使用循环。它只运行一次。

访问函数
属性state:QAbstractAnimation.State#

此属性存储动画的状态。

此属性描述动画的当前状态。当动画状态发生变化时,QAbstractAnimation 会发出 stateChanged() 信号。

注意

状态更新可能会更新代码 arg 《a class="reference internal" href="#id1" title="PySide6.QtCore.QAbstractAnimation.currentTime">currentTime 属性,而这反过来又可能导致其数据绑定的取消。因此,在预期动画状态发生变化时,请谨慎设置 currentTime 属性的绑定。

访问函数
__init__([parent=None])#
参数:

parent – 代码 arg 《a class="reference internal" href="QObject.html#PySide6.QtCore.QObject" title="PySide6.QtCore.QObject">QObject

构建了 QAbstractAnimation 基类,并将 parent 传递给 QObject 的构造函数。

currentLoop()#
返回类型:

int

是属性 currentLoop 的获取器。

currentLoopChanged(currentLoop)#
参数:

currentLoop – int

QAbstractAnimation 会在当前循环发生变化时发出此信号。 currentLoop 是当前的循环。

另请参阅

currentLoop() loopCount()

属性 currentLoop 的通知信号。

currentLoopTime()#
返回类型:

int

返回当前循环内的当前时间。这可以从0到 duration()

另请参阅

duration() currentTime

currentTime()#
返回类型:

int

另请参阅

setCurrentTime()

属性 currentTime 的获取器。

direction()#
返回类型:

方向

另请参阅

setDirection()

属性 direction 的获取器。

directionChanged(arg__1)#
参数:

arg__1Direction

QAbstractAnimation 在方向改变时发出此信号。 newDirection 是新的方向。

另请参阅

direction

属性 direction 的通知信号。

abstractduration()#
返回类型:

int

这个纯虚拟函数返回动画的持续时间,并定义 QAbstractAnimation 应该更新当前时间多长时间。这个持续时间是局部的,不包括循环次数。

返回值是-1表示动画没有定义的持续时间;动画应该一直运行直到停止。这对于非时间驱动的动画或难以预测其持续时间的场合很有用(例如,游戏中的事件驱动音频播放)。

如果动画是并行 QAnimationGroup ,持续时间将是所有动画中最长的持续时间。如果动画是顺序 QAnimationGroup ,持续时间将是所有动画持续时间的总和。

另请参阅

loopCount

属性 duration 的获取器。

finished()#

动画停止并达到末尾后,QAbstractAnimation 发出此信号。

stateChanged() 之后发出此信号。

另请参阅

stateChanged()

group()#
返回类型:

QAnimationGroup

如果这个动画是QAnimationGroup 的一部分,则此函数返回该数组的指针;否则,返回 None

另请参阅

addAnimation()

loopCount()#
返回类型:

int

另请参阅

setLoopCount()

属性 loopCount 的获取器。

pause()#

暂停动画。当动画被暂停时,state() 返回 Pause 状态。函数的 currentTime 值将保持不变,直到调用 resume()start()。如果要从当前时间继续,请调用 resume()

另请参阅

start() state() resume()

resume()#

在动画暂停后继续播放。当动画恢复时,将发出 resumed() 和 stateChanged() 信号。当前时间不改变。

另请参阅

start() pause() state()

setCurrentTime(msecs)#
参数:

msecs – int

另请参阅

currentTime()

属性 currentTime 的设置器。

setDirection(direction)#
参数:

directionDirection

另请参阅

direction()

属性 direction 的设置器。

setLoopCount(loopCount)#
参数:

loopCount – int

另请参阅

loopCount()

属性 loopCount 的设置器。

setPaused(arg__1)#
参数:

arg__1 – bool

如果 paused 为 true,则动画暂停。如果 paused 为 false,则动画恢复。

另请参阅

state() pause() resume()

start([policy=QAbstractAnimation.DeletionPolicy.KeepWhenStopped])#
参数:

policyDeletionPolicy

开始动画。参数 policy 指明动画完成后是否应该被删除。当动画开始时,会发出 stateChanged() 信号,且 state() 返回 Running。当控制达到事件循环时,动画将自行运行,周期性地调用 updateCurrentTime() ,以使动画进展。

如果动画当前处于停止状态或已到达末尾,调用 start() 将使动画倒退并从头开始。当动画到达末尾时,动画将停止,或者如果循环级别超过 1,则将倒退并从开始位置继续。

如果动画已经在运行,此函数将不执行任何操作。

另请参阅

stop() state()

state()#
返回类型:

状态

属性 state 的获取器。

stateChanged(newState, oldState)#
参数:

QAbstractAnimation 在动画状态从 oldState 变为 newState 时发出此信号。在调用虚拟函数 updateState() 后发出该信号。

另请参阅

updateState()

属性 state 的通知信号。

stop()#

停止动画。动画停止时,会发出 stateChanged 信号,并且 state 返回 Stopped。当前时间不会改变。

如果动画在到达结尾后自动停止(即 currentLoopTime == duration 并且 currentLoop > loopCount - 1),则发出 finished 信号。

另请参阅

start state

totalDuration()#
返回类型:

int

返回动画的总持续时间,包括循环次数。

另请参阅

duration() currentTime

抽象 updateCurrentTime(currentTime)#
参数:

currentTime – int

每次动画的 currentTime 发生改变时,都会调用这个纯虚函数。

另请参阅

updateState()

updateDirection(direction)#
参数:

directionDirection

这个虚函数在动画方向改变时由QAbstractAnimation 调用。参数 direction 是新的方向。

updateState(newState, oldState)#
参数:

这个虚函数在动画状态从 oldState 变为 newState 时由 QAbstractAnimation 调用。