class QMovie#

QMovie 类是一个方便类,用于使用 QImageReader 播放电影。 更多

Inheritance diagram of PySide6.QtGui.QMovie

概述#

属性#

方法#

槽函数#

信号#

静态函数#

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们欢迎向大家贡献翻译工作。如果您发现翻译存在问题,也可以通过在以下链接处创建工单 https:/bugreports.qt.io/projects/PYSIDE

详细描述#

警告

本节包含从C++自动翻译到Python的代码片段,可能会包含错误。

此类用于显示不包含声音的简单动画。

首先,通过传递文件名或指向包含动画图像格式QIODevice的指针到QMovie 构造函数来创建一个 QMovie 对象。您可以在开始电影前调用 isValid() 检查图像数据是否有效。要开始电影,调用 start()QMovie 将进入 Running 状态,并触发 started()stateChanged() 。要获取电影的当前状态,调用 state()

要在您的应用程序中显示电影,可以将您的 QMovie 对象传递给 QLabel::setMovie()。示例

label = QLabel()
movie = QMovie("animations/fire.gif")
label.setMovie(movie)
movie.start()

每当电影中出现新帧时,QMovie将触发updated() 。如果帧的大小发生变化,则会触发resized()。您可以通过调用currentImage()currentPixmap()来获取当前帧的副本。当电影结束时,QMovie将触发finished()。如果在播放过程中发生任何错误(例如,图像文件损坏),则QMovie将触发error()

您可以通过调用setSpeed()来控制电影播放的速度,该函数以原始速度的百分比作为参数。通过调用setPaused(true)暂停电影。QMovie将进入Paused状态并触发stateChanged()。如果您调用setPaused(false),则QMovie将重新进入Running状态并重新开始播放。要停止电影,请调用stop()

某些动画格式允许您设置背景颜色。您可以通过调用setBackgroundColor()来设置颜色,或通过调用backgroundColor()来检索当前背景颜色。

currentFrameNumber() 返回当前帧的序列号。动画的第一帧序列号为0。 frameCount() 返回动画中的总帧数,如果图像格式支持。您可以调用 loopCount() 以获取电影在完成前应该循环的次数。 nextFrameDelay() 返回当前帧应该显示的毫秒数。

QMovie 可以通过调用 setCacheMode() 指示缓存动画的帧。

调用 supportedFormats() 获取 QMovie 支持的格式列表。

另见

QImageReader

class MovieState#

此枚举描述了 QMovie 的不同状态。

常量

描述

QMovie.NotRunning

电影未运行。这是 QMovie 的初始状态,和在调用 stop() 后或电影完成时进入的状态。

QMovie.Paused

电影已暂停,并且 QMovie 停止发出 updated()resized() 事件。该状态在调用 pause() 或 setPaused (true) 后进入。它保留当前的帧号,当调用 unpause() 或 setPaused (false) 时,电影将从下一帧继续。

QMovie.Running

电影正在运行。

class CacheMode#

此枚举描述了 QMovie 的不同缓存模式。

常量

描述

QMovie.CacheNone

不缓存任何帧(默认)。

QMovie.CacheAll

缓存所有帧。

注意

属性可以在使用 from __feature__ import true_property 时直接使用,或者通过访问器函数来使用。

属性cacheMode: QMovie.CacheMode#

此属性包含电影缓存模式。

当底层动画格式处理程序(QMovie 依赖以解码动画数据)不支持跳转到动画中的特定帧,或者甚至无法“倒放”动画到开始位置(用于循环)时,缓存帧可能会有用。此外,如果图像数据来自顺序设备,底层动画处理程序无法搜索回已读取数据的帧(使得循环完全不可能)。

为了帮助这种情况,可以指示 QMovie 对象缓存帧,这将在内存中保留帧的成本下以增加内存的使用。

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

另见

缓存模式

访问函数
属性speed: int#

警告

本节包含从C++自动翻译到Python的代码片段,可能会包含错误。

此属性包含电影的速度。

速度以原始电影速度的百分比表示。默认速度为 100%。示例

movie = QMovie("racecar.gif")
movie.setSpeed(200) # 2x speed
访问函数
__init__([parent=None])#
参数:

parentQObject

构建一个 QMovie 对象,将 parent 对象传递给 QObject 的构造函数。

__init__(device[, format=QByteArray()[, parent=None]])
参数:

构建一个 QMovie 对象。《QMovie 会从 device 中读取图像数据,它假定 device 是打开且可读的。如果 format 不为空,QMovie 将使用 format 注明的图像格式来解码图像数据。否则,QMovie 将尝试猜测格式。

parent 对象将被传递给 QObject 的构造函数。

__init__(fileName[, format=QByteArray()[, parent=None]])
参数:

构建一个 QMovie 对象。《QMovie 会从 fileName 中读取图像数据。如果 format 不为空,QMovie 将使用 format 注明的图像格式来解码图像数据。否则,QMovie 将尝试猜测格式。

parent 对象将被传递给 QObject 的构造函数。

backgroundColor()#
返回类型:

QColor

返回电影的背景颜色。如果没有分配背景颜色,将返回一个无效的 QColor

cacheMode()#
返回类型:

缓存模式

属性 cacheModeᅟ 的获取器。

currentFrameNumber()#
返回类型:

int

返回当前帧的序列号。电影中第一帧的编号是 0。

currentImage()#
返回类型:

QImage

返回当前的帧作为一个 QImage .

currentPixmap()#
返回类型:

QPixmap

返回当前的帧作为一个 QPixmap .

device()#
返回类型:

QIODevice

返回 < code class="xref py py-class docutils literal notranslate">QMovie 从中读取图像数据的设备。如果尚未分配设备,则返回 < code class="docutils literal notranslate">None

error(error)#
参数:

错误 – ImageReaderError

此信号在 < a class="reference internal" href="#PySide6.QtGui.QMovie" title="PySide6.QtGui.QMovie">QMovie 播放过程中发生错误 < code class="docutils literal notranslate">error 时发射。 < a class="reference internal" href="#PySide6.QtGui.QMovie" title="PySide6.QtGui.QMovie">QMovie 将停止电影,并进入 < a class="reference internal" href="#PySide6.QtGui.QMovie.MovieState" title="PySide6.QtGui.QMovie.MovieState">NotRunning 状态。

fileName()#
返回类型:

str

返回 < a class="reference internal" href="#PySide6.QtGui.QMovie" title="PySide6.QtGui.QMovie">QMovie 从中读取图像数据的文件名。如果未分配文件名或分配的设备不是文件,则返回空的 QString。

finished()#

此信号在电影播放结束时发出。

另见

stop()

format()#
返回类型:

QByteArray

返回QMovie解码图像数据时使用的格式。如果没有指定格式,则返回一个空的QByteArray()。

另见

setFormat()

frameChanged(frameNumber)#
参数:

frameNumber – int

当帧号变为frameNumber时发出此信号。您可以通过调用currentImage()currentPixmap()来获取帧的副本。

frameCount()#
返回类型:

int

返回电影中的帧数。

某些动画格式不支持此功能,此时返回0。

frameRect()#
返回类型:

QRect

返回最后一帧的矩形。如果尚未更新任何帧,则返回一个无效的QRect。

isValid()#
返回类型:

bool

如果电影有效(例如,图像数据可读并且图像格式受支持),则返回true;否则返回false

有关电影为何无效的信息,请参阅lastError()

jumpToFrame(frameNumber)#
参数:

frameNumber – int

返回类型:

bool

跳转到帧号frameNumber。成功时返回true;否则返回false

jumpToNextFrame()#
返回类型:

bool

跳转到下一帧。成功时返回 true;否则返回 false

lastError()#
返回类型:

ImageReaderError

返回在尝试读取图像数据时发生的最新错误。

lastErrorString()#
返回类型:

str

返回尝试读取图像数据时发生的最新错误的人类可读表示。

另见

lastError()

loopCount()#
返回类型:

int

返回电影完成之前将循环的次数。如果电影只播放一次(没有循环),则 loopCount 返回 0。如果电影无限循环,则 loopCount 返回 -1。

请注意,如果图像数据来自内存顺序设备(例如,一个套接字),则 QMovie 仅当 cacheMode 设置为 CacheAll 时才能循环播放电影。

nextFrameDelay()#
返回类型:

int

返回 QMovie 在更新动画中的下一帧之前将要等待的毫秒数。

resized(size)#
参数:

sizeQSize

当前帧已调整大小时发出此信号。此效果有时用于动画,作为替换帧的替代方案。您可以通过调用 currentImage()currentPixmap() 来获取更新帧的副本。

scaledSize()#
返回类型:

QSize

返回帧的缩放大小。

setBackgroundColor(color)#
参数:

colorQColor

对于支持该格式的图像格式,此函数将背景颜色设置为 color

setCacheMode(mode)#
参数:

modeCacheMode

另见

cacheMode()

属性 cacheMode 的设置器。

setDevice(device)#
参数:

deviceQIODevice

将当前设备设置为 device。当电影播放时,QMovie 将从此设备读取图像数据。

setFileName(fileName)#
参数:

fileName - str

QMovie 记录图像数据的文件名设置为 fileName

setFormat(format)#
参数:

格式 - QByteArray

QMovie 在解码图像数据时使用的格式设置为 format。默认情况下,QMovie 将尝试猜测图像数据的格式。

可以通过调用 supportedFormats() 来获得 QMovie 支持的所有格式列表。

setPaused(paused)#
参数:

paused – bool

如果 paused 为 true,则 QMovie 将进入 Paused 状态并发出 stateChanged (Paused) 信号;否则,它将进入 Running 状态并发出 stateChanged (Running) 信号。

另见

state()

setScaledSize(size)#
参数:

sizeQSize

将缩放帧的大小设置为 size

setSpeed(percentSpeed)#
参数:

percentSpeed – int

另见

speed()

属性 speed 的设置器。

speed()#
返回类型:

int

另见

setSpeed()

属性 speed 的获取器。

start()#

开始播放电影。 QMovie 将进入 Running 状态,并随着电影的播放开始发出 updated()resized() 信号。

如果 QMoviePaused 状态,此函数等同于调用 setPaused (false)。如果 QMovie 已经在 Running 状态,此函数不执行任何操作。

started()#

此信号在调用 start() 后发出,并且 QMovie 进入 Running 状态。

state()#
返回类型:

MovieState

返回 QMovie 的当前状态。

stateChanged(state)#
参数:

stateMovieState

每当电影的状态改变时都会发出此信号。新的状态由 state 指定。

另见

state()

stop()#

停止电影。 QMovie 进入 NotRunning 状态,并停止发出 updated()resized() 。如果再次调用 start(),电影将从开始处重新开始。

如果 QMovie 已经处于 NotRunning 状态,此函数不执行任何操作。

static supportedFormats()#
返回类型:

. QByteArray 列表

返回由QMovie支持的图像格式列表。

updated(rect)#
参数:

rectQRect

当当前帧中的rect rect被更新时,会发出此信号。您可以调用currentImage()currentPixmap()来获取更新后的帧副本。