PySide6.QtCore.QTimeLine¶
- class QTimeLine¶
QTimeLine
类提供了一个用于控制动画的时间线。更多…概要¶
属性¶
currentTimeᅟ
- 时间线的当前时间directionᅟ
- 当QTimeLine处于运行状态时的时间线方向durationᅟ
- 时间轴的总持续时间,以毫秒为单位loopCountᅟ
- 时间轴在完成之前应该循环的次数updateIntervalᅟ
- QTimeLine 每次更新其当前时间之间的时间间隔,单位为毫秒
方法¶
def
__init__()
def
currentFrame()
def
currentTime()
def
currentValue()
def
direction()
def
duration()
def
easingCurve()
def
endFrame()
def
frameForTime()
def
loopCount()
def
setDirection()
def
setDuration()
def
setEasingCurve()
def
setEndFrame()
def
setFrameRange()
def
setLoopCount()
def
setStartFrame()
def
startFrame()
def
state()
def
updateInterval()
虚拟方法¶
def
valueForTime()
插槽¶
def
resume()
def
setCurrentTime()
def
setPaused()
def
start()
def
stop()
信号¶
def
finished()
def
frameChanged()
def
stateChanged()
def
valueChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
它最常用于通过定期调用槽来动画化GUI控件。您可以通过将持续时间(以毫秒为单位)传递给
QTimeLine
的构造函数来构建时间线。时间线的持续时间描述了动画将运行多长时间。然后通过调用setFrameRange()
设置合适的帧范围。最后将frameChanged()
信号连接到您希望动画化的小部件中的合适槽(例如,QProgressBar中的setValue())。当您继续调用start()
时,QTimeLine
将进入运行状态,并开始定期发出frameChanged()
,导致您的小部件的连接属性值以稳定的速率从帧范围的下限增长到上限。您可以通过调用setUpdateInterval()
来指定更新间隔。完成后,QTimeLine
进入NotRunning
状态,并发出finished()
。示例:
... progressBar = QProgressBar(self) progressBar.setRange(0, 100) # Construct a 1-second timeline with a frame range of 0 - 100 timeLine = QTimeLine(1000, self) timeLine.setFrameRange(0, 100) timeLine.frameChanged.connect(progressBar.setValue) # Clicking the push button will start the progress bar animation pushButton = QPushButton(tr("Start animation"), self) pushButton.clicked.connect(timeLine.start) ...
默认情况下,时间线运行一次,从开始到结束,之后你必须再次调用
start()
以从头开始重新启动。为了使时间线循环,你可以调用setLoopCount()
,传递时间线在结束前应运行的次数。通过调用setDirection()
,还可以改变方向,使时间线向后运行。你还可以在时间线运行时通过调用setPaused()
来暂停和恢复时间线。为了进行交互控制,提供了setCurrentTime()
函数,该函数直接设置时间线的时间位置。尽管在NotRunning
状态下最有用(例如,连接到QSlider中的valueChanged()
信号),但此函数可以在任何时候调用。框架接口对于标准小部件非常有用,但
QTimeLine
可用于控制任何类型的动画。QTimeLine
的核心在于valueForTime()
函数,该函数为给定时间生成一个介于0和1之间的值。这个值通常用于描述动画的步骤,其中0是动画的第一步,1是动画的最后一步。运行时,QTimeLine
通过调用valueForTime()
并发出valueChanged()
来生成介于0和1之间的值。默认情况下,valueForTime()
应用插值算法来生成这些值。您可以通过调用setEasingCurve()
从一组预定义的时间轴算法中进行选择。请注意,默认情况下,
QTimeLine
使用InOutSine
,它提供的值会先缓慢增长,然后稳定增长,最后再缓慢增长。对于自定义的时间线,你可以重新实现valueForTime()
,在这种情况下,QTimeLine
的easingCurve
属性将被忽略。另请参阅
QProgressBarQProgressDialog
- class State¶
此枚举描述了时间线的状态。
常量
描述
QTimeLine.NotRunning
时间轴未运行。这是
QTimeLine
的初始状态,也是QTimeLine
在完成时重新进入的状态。当前时间、帧和值保持不变,直到调用setCurrentTime()
,或者通过调用start()
启动时间轴。QTimeLine.Paused
时间线已暂停(即暂时挂起)。调用
setPaused
(false) 将恢复时间线活动。QTimeLine.Running
时间轴正在运行。当控制处于事件循环中时,
QTimeLine
将定期更新其当前时间,并在适当时发出valueChanged()
和frameChanged()
。另请参阅
- class Direction¶
此枚举描述了在
Running
状态时时间线的方向。常量
描述
QTimeLine.Forward
时间轴的当前时间随时间增加(即从0开始向结束/持续时间移动)。
QTimeLine.Backward
时间轴的当前时间随时间减少(即从结束/持续时间向0移动)。
另请参阅
注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property currentTimeᅟ: int¶
此属性保存时间线的当前时间。
当
QTimeLine
处于运行状态时,此值会随着时间线的持续时间和方向不断更新。否则,它是最后一次调用stop()
时的当前值,或者是由setCurrentTime()设置的值。注意
您可以将其他属性绑定到currentTime,但不建议对其进行绑定设置。随着动画的进行,currentTime会自动更新,这将取消其绑定。
默认情况下,此属性包含的值为0。
- Access functions:
- property directionᅟ: QTimeLine.Direction¶
此属性在
QTimeLine
处于Running
状态时,保存时间线的方向。此方向指示时间是从0向时间轴持续时间移动,还是在调用
start()
后从持续时间值向0移动。任何方向的绑定不仅会被setDirection()移除,还会被
toggleDirection()
移除。默认情况下,此属性设置为
Forward
。- Access functions:
- property durationᅟ: int¶
此属性保存时间轴的总持续时间,以毫秒为单位。
默认情况下,此值为1000(即1秒),但您可以通过向
QTimeLine
的构造函数传递持续时间,或通过调用setDuration()来更改此值。持续时间必须大于0。注意
更改持续时间不会导致当前时间重置为零或新的持续时间。您还需要使用所需的值调用
setCurrentTime()
。- Access functions:
- property easingCurveᅟ: QEasingCurve¶
指定时间轴将使用的缓动曲线。如果重新实现了
valueForTime()
,则忽略此值。另请参阅
- Access functions:
- property loopCountᅟ: int¶
此属性保存时间轴在完成之前应循环的次数。
循环计数为0意味着时间线将永远循环。
默认情况下,此属性包含值为1。
- Access functions:
- property updateIntervalᅟ: int¶
此属性保存每次
QTimeLine
更新其当前时间之间的时间(以毫秒为单位)。当更新当前时间时,如果当前值发生变化,
QTimeLine
将发出valueChanged()
,如果帧发生变化,则发出frameChanged()
。默认情况下,间隔为40毫秒,相当于每秒25次更新。
- Access functions:
构建一个持续时间为
duration
毫秒的时间线。parent
被传递给QObject
的构造函数。默认持续时间为1000毫秒。- currentFrame()¶
- Return type:
整数
返回与当前时间对应的帧。
- currentTime()¶
- Return type:
整数
另请参阅
属性
currentTimeᅟ
的获取器。- currentValue()¶
- Return type:
浮点数
返回与当前时间对应的值。
- direction()¶
- Return type:
另请参阅
属性
directionᅟ
的获取器。- duration()¶
- Return type:
整数
另请参阅
属性
durationᅟ
的获取器。- easingCurve()¶
- Return type:
另请参阅
属性
easingCurveᅟ
的获取器。- endFrame()¶
- Return type:
整数
返回结束帧,即对应于时间线结束的帧(即当前值为1的帧)。
- finished()¶
当
QTimeLine
完成时(即到达时间线的末尾),并且不循环时,会发出此信号。- frameChanged(frame)¶
- Parameters:
frame – 整数
QTimeLine
在Running
状态下定期发出此信号,但仅在当前帧发生变化时。frame
是当前帧的编号。- frameForTime(msec)¶
- Parameters:
毫秒 – 整数
- Return type:
整数
返回与时间
msec
对应的帧。该值是基于valueForTime()
返回的值,通过起始帧和结束帧的线性插值计算得出的。- loopCount()¶
- Return type:
整数
另请参阅
属性
loopCountᅟ
的获取器。- resume()¶
从当前时间恢复时间线。
QTimeLine
将重新进入运行状态,一旦进入事件循环,它将定期更新其当前时间、帧和值。与
start()
不同,此函数在恢复之前不会重新启动时间线。- setCurrentTime(msec)¶
- Parameters:
毫秒 – 整数
另请参阅
属性
currentTimeᅟ
的设置器。属性
directionᅟ
的设置器。- setDuration(duration)¶
- Parameters:
duration – int
另请参阅
属性
durationᅟ
的设置器。- setEasingCurve(curve)¶
- Parameters:
曲线 –
QEasingCurve
另请参阅
属性
easingCurveᅟ
的设置器。- setEndFrame(frame)¶
- Parameters:
frame – 整数
设置结束帧,即对应于时间线结束的帧(即当前值为1的帧),为
frame
。- setFrameRange(startFrame, endFrame)¶
- Parameters:
startFrame – int
endFrame – int
将时间线的帧计数器设置为从
startFrame
开始,并在endFrame
结束。对于每个时间值,QTimeLine
会在你调用currentFrame()
或frameForTime()
时,通过插值找到对应的帧,使用valueForTime()
的返回值。当处于运行状态时,
QTimeLine
也会在帧变化时发出frameChanged()
信号。- setLoopCount(count)¶
- Parameters:
count – int
另请参阅
属性
loopCountᅟ
的设置器。- setPaused(paused)¶
- Parameters:
暂停 – bool
如果
paused
为 true,时间线将暂停,导致QTimeLine
进入暂停状态。在调用start()
或 setPaused(false) 之前,不会发出任何更新信号。如果paused
为 false,时间线将恢复并从暂停的地方继续。- setStartFrame(frame)¶
- Parameters:
frame – 整数
设置起始帧,即对应于时间线开始的帧(即当前值为0的帧),为
frame
。- setUpdateInterval(interval)¶
- Parameters:
interval – 整数
另请参阅
属性
updateIntervalᅟ
的设置器。- start()¶
启动时间线。
QTimeLine
将进入运行状态,一旦进入事件循环,它将定期更新其当前时间、帧和值。默认间隔为40毫秒(即每秒25次)。您可以通过调用setUpdateInterval()
来更改更新间隔。时间轴将从位置0开始,如果向后移动则从末尾开始。如果你想在不重新启动的情况下恢复一个停止的时间轴,你可以调用
resume()
来代替。- startFrame()¶
- Return type:
整数
返回起始帧,即对应于时间线开始的帧(即当前值为0的帧)。
返回时间轴的状态。
另请参阅
每当
QTimeLine
的状态发生变化时,都会发出此信号。新状态是newState
。- stop()¶
停止时间线,导致
QTimeLine
进入NotRunning
状态。另请参阅
- toggleDirection()¶
切换时间线的方向。如果方向是向前,则变为向后,反之亦然。
现有的
direction
绑定被移除。另请参阅
- updateInterval()¶
- Return type:
整数
另请参阅
属性
updateIntervalᅟ
的获取器。- valueChanged(x)¶
- Parameters:
x – 浮点数
QTimeLine
在Running
状态下定期发出此信号,但仅在当前值发生变化时。value
是当前值。value
是一个介于 0.0 和 1.0 之间的数字- valueForTime(msec)¶
- Parameters:
毫秒 – 整数
- Return type:
浮点数
返回时间
msec
的时间线值。返回的值根据曲线形状而变化,始终在0和1之间。如果msec
为0,默认实现总是返回0。重新实现此函数以为您的时间线提供自定义曲线形状。