PySide6.QtCore.QAbstractAnimation

class QAbstractAnimation

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

PySide6.QtCore.QAbstractAnimation 的继承图

继承自: QVariantAnimation, QPropertyAnimation, QPauseAnimation, QAnimationGroup, QSequentialAnimationGroup, QParallelAnimationGroup

在版本4.6中添加。

概要

属性

方法

虚拟方法

插槽

信号

注意

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

详细描述

该类定义了所有动画共享功能的功能。通过继承这个类,您可以创建自定义动画,这些动画可以插入到动画框架的其余部分中。

动画的进度由其当前时间(currentLoopTime())给出,该时间从动画开始(0)到结束(duration())以毫秒为单位测量。该值在动画运行时自动更新。也可以通过setCurrentTime()直接设置。

在任何时候,动画都处于以下三种状态之一:RunningStoppedPaused —— 这些状态由 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的初始状态,也是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() 信号。

Access functions:
property currentTimeᅟ: int

此属性保存动画的当前时间和进度。

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

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

注意

您可以将其他属性绑定到currentTime,但不建议对其进行绑定设置。随着动画的进行,currentTime会自动更新,这将取消其绑定。

Access functions:
property directionᅟ: QAbstractAnimation.Direction

此属性保存动画在Running状态时的方向。

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

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

Access functions:
property durationᅟ: int

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

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

Access functions:
property loopCountᅟ: int

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

此属性描述了动画的循环次数为一个整数。默认情况下,此值为1,表示动画应仅运行一次,然后停止。通过更改此值,您可以让动画循环多次。值为0时,动画将完全不运行,值为-1时,动画将无限循环,直到停止。对于持续时间未定义的动画,不支持循环。它只会运行一次。

Access functions:
property stateᅟ: QAbstractAnimation.State

此属性保存动画的状态。

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

注意

状态更新可能会导致currentTime属性的更新,这反过来可能会取消其绑定。因此,在设置currentTime属性的绑定时要小心,尤其是在你预期动画状态会发生变化时。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

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

currentLoop()
Return type:

整数

属性 currentLoopᅟ 的获取器。

currentLoopChanged(currentLoop)
Parameters:

currentLoop – int

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

另请参阅

currentLoop() loopCount()

属性 currentLoopᅟ 的通知信号。

currentLoopTime()
Return type:

整数

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

另请参阅

duration() currentTime

currentTime()
Return type:

整数

另请参阅

setCurrentTime()

属性 currentTimeᅟ 的获取器。

direction()
Return type:

方向

另请参阅

setDirection()

属性 directionᅟ 的获取器。

directionChanged(newDirection)
Parameters:

newDirectionDirection

QAbstractAnimation 每当方向改变时都会发出此信号。newDirection 是新的方向。

另请参阅

direction

属性 directionᅟ 的通知信号。

abstract duration()
Return type:

整数

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

返回值为-1表示动画没有定义持续时间;动画应该一直运行,直到被停止。这对于不是时间驱动的动画,或者你无法轻易预测其持续时间的情况非常有用(例如,游戏中的事件驱动音频播放)。

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

另请参阅

loopCount

属性 durationᅟ 的获取器。

finished()

QAbstractAnimation 在动画停止并到达结束时发出此信号。

此信号在stateChanged()之后发出。

另请参阅

stateChanged()

group()
Return type:

QAnimationGroup

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

另请参阅

addAnimation()

loopCount()
Return type:

整数

另请参阅

setLoopCount()

属性 loopCountᅟ 的获取器。

pause()

暂停动画。当动画暂停时,state() 返回 Paused。currentTime 的值将保持不变,直到调用 resume()start()。如果你想从当前时间继续,调用 resume()

另请参阅

start() state() resume()

resume()

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

另请参阅

start() pause() state()

setCurrentTime(msecs)
Parameters:

msecs – 整数

另请参阅

currentTime()

属性 currentTimeᅟ 的设置器。

setDirection(direction)
Parameters:

方向Direction

另请参阅

direction()

属性 directionᅟ 的设置器。

setLoopCount(loopCount)
Parameters:

loopCount – int

另请参阅

loopCount()

属性 loopCountᅟ 的设置器。

setPaused(paused)
Parameters:

暂停 – bool

如果 paused 为 true,动画将暂停。如果 paused 为 false,动画将继续。

另请参阅

state() pause() resume()

start([policy=QAbstractAnimation.DeletionPolicy.KeepWhenStopped])
Parameters:

策略DeletionPolicy

开始动画。policy参数表示动画完成后是否应删除。当动画开始时,会发出stateChanged()信号,并且state()返回Running。当控制到达事件循环时,动画将自行运行,随着动画的进行,定期调用updateCurrentTime()

如果动画当前已停止或已经到达结尾,调用start()将倒回动画并从头开始。当动画到达结尾时,动画将停止,或者如果循环级别大于1,它将倒回并从开头继续。

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

另请参阅

stop() state()

state()
Return type:

State

属性 stateᅟ 的获取器。

stateChanged(newState, oldState)
Parameters:

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

另请参阅

updateState()

属性 stateᅟ 的通知信号。

stop()

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

如果动画在到达结束时自行停止(即 currentLoopTime() == duration()currentLoop() > loopCount() - 1),则会发出 finished() 信号。

另请参阅

start() state()

totalDuration()
Return type:

整数

返回动画的总时长和有效时长,包括循环次数。

另请参阅

duration() currentTime

abstract updateCurrentTime(currentTime)
Parameters:

currentTime – int

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

另请参阅

updateState()

updateDirection(direction)
Parameters:

方向Direction

当动画的方向改变时,QAbstractAnimation 会调用此虚拟函数。direction 参数是新方向。

updateState(newState, oldState)
Parameters:

当动画的状态从oldState变为newState时,QAbstractAnimation会调用此虚拟函数。