PySide6.QtCore.QAbstractAnimation¶
- class QAbstractAnimation¶
QAbstractAnimation类是所有动画的基类。更多…继承自:
QVariantAnimation,QPropertyAnimation,QPauseAnimation,QAnimationGroup,QSequentialAnimationGroup,QParallelAnimationGroup在版本4.6中添加。
概要¶
属性¶
currentLoopᅟ- 动画的当前循环currentTimeᅟ- 动画的当前时间和进度directionᅟ- 动画在运行状态时的方向durationᅟ- 动画的持续时间loopCountᅟ- 动画的循环次数stateᅟ- 动画的状态
方法¶
def
__init__()def
currentLoop()def
currentTime()def
direction()def
group()def
loopCount()def
setDirection()def
setLoopCount()def
state()def
totalDuration()
虚拟方法¶
def
duration()def
updateState()
插槽¶
def
pause()def
resume()def
setCurrentTime()def
setPaused()def
start()def
stop()
信号¶
def
finished()def
stateChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
该类定义了所有动画共享功能的功能。通过继承这个类,您可以创建自定义动画,这些动画可以插入到动画框架的其余部分中。
动画的进度由其当前时间(
currentLoopTime())给出,该时间从动画开始(0)到结束(duration())以毫秒为单位测量。该值在动画运行时自动更新。也可以通过setCurrentTime()直接设置。在任何时候,动画都处于以下三种状态之一:
Running、Stopped或Paused—— 这些状态由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移动)。
另请参阅
- class State¶
此枚举描述了动画的状态。
常量
描述
QAbstractAnimation.Stopped
动画未运行。这是
QAbstractAnimation的初始状态,也是QAbstractAnimation在完成时重新进入的状态。当前时间保持不变,直到调用setCurrentTime(),或者通过调用start()启动动画。QAbstractAnimation.Paused
动画已暂停(即暂时挂起)。调用
resume()将恢复动画活动。QAbstractAnimation.Running
动画正在运行。当控制在事件循环中时,
QAbstractAnimation将定期更新其当前时间,并在适当的时候调用updateCurrentTime()。另请参阅
- 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:
构建了
QAbstractAnimation基类,并将parent传递给QObject的构造函数。- currentLoop()¶
- Return type:
整数
属性
currentLoopᅟ的获取器。- currentLoopChanged(currentLoop)¶
- Parameters:
currentLoop – int
QAbstractAnimation每当当前循环发生变化时发出此信号。currentLoop是当前循环。另请参阅
属性
currentLoopᅟ的通知信号。- currentLoopTime()¶
- Return type:
整数
返回当前循环内的当前时间。它可以从0到
duration()。另请参阅
- currentTime()¶
- Return type:
整数
另请参阅
属性
currentTimeᅟ的获取器。- direction()¶
- Return type:
另请参阅
属性
directionᅟ的获取器。QAbstractAnimation每当方向改变时都会发出此信号。newDirection是新的方向。另请参阅
属性
directionᅟ的通知信号。- abstract duration()¶
- Return type:
整数
这个纯虚函数返回动画的持续时间,并定义了
QAbstractAnimation应该更新当前时间的时间长度。这个持续时间是局部的,不包括循环次数。返回值为-1表示动画没有定义持续时间;动画应该一直运行,直到被停止。这对于不是时间驱动的动画,或者你无法轻易预测其持续时间的情况非常有用(例如,游戏中的事件驱动音频播放)。
如果动画是一个并行的
QAnimationGroup,持续时间将是其所有动画中最长的持续时间。如果动画是一个顺序的QAnimationGroup,持续时间将是其所有动画持续时间的总和。另请参阅
属性
durationᅟ的获取器。- finished()¶
QAbstractAnimation在动画停止并到达结束时发出此信号。此信号在
stateChanged()之后发出。另请参阅
- group()¶
- Return type:
如果这个动画是
QAnimationGroup的一部分,这个函数返回指向该组的指针;否则,它返回None。另请参阅
- loopCount()¶
- Return type:
整数
另请参阅
属性
loopCountᅟ的获取器。- pause()¶
暂停动画。当动画暂停时,
state()返回 Paused。currentTime的值将保持不变,直到调用resume()或start()。如果你想从当前时间继续,调用resume()。- resume()¶
在动画暂停后恢复播放。当动画恢复时,它会发出resumed()和
stateChanged()信号。当前时间不会改变。- setCurrentTime(msecs)¶
- Parameters:
msecs – 整数
另请参阅
属性
currentTimeᅟ的设置器。属性
directionᅟ的设置器。- setLoopCount(loopCount)¶
- Parameters:
loopCount – int
另请参阅
属性
loopCountᅟ的设置器。- setPaused(paused)¶
- Parameters:
暂停 – bool
如果
paused为 true,动画将暂停。如果paused为 false,动画将继续。- start([policy=QAbstractAnimation.DeletionPolicy.KeepWhenStopped])¶
- Parameters:
策略 –
DeletionPolicy
开始动画。
policy参数表示动画完成后是否应删除。当动画开始时,会发出stateChanged()信号,并且state()返回Running。当控制到达事件循环时,动画将自行运行,随着动画的进行,定期调用updateCurrentTime()。如果动画当前已停止或已经到达结尾,调用start()将倒回动画并从头开始。当动画到达结尾时,动画将停止,或者如果循环级别大于1,它将倒回并从开头继续。
如果动画已经在运行,此函数不执行任何操作。
属性
stateᅟ的获取器。QAbstractAnimation每当动画的状态从oldState变为newState时,都会发出此信号。此信号在调用虚拟函数updateState()后发出。另请参阅
属性
stateᅟ的通知信号。- stop()¶
停止动画。当动画停止时,它会发出
stateChanged()信号,并且state()返回 Stopped。当前时间不会改变。如果动画在到达结束时自行停止(即
currentLoopTime()==duration()且currentLoop()>loopCount()- 1),则会发出finished()信号。- totalDuration()¶
- Return type:
整数
返回动画的总时长和有效时长,包括循环次数。
另请参阅
- abstract updateCurrentTime(currentTime)¶
- Parameters:
currentTime – int
每当动画的
currentTime发生变化时,都会调用这个纯虚函数。另请参阅
当动画的方向改变时,
QAbstractAnimation会调用此虚拟函数。direction参数是新方向。当动画的状态从
oldState变为newState时,QAbstractAnimation会调用此虚拟函数。