PyQt显示gif

PyQt可以使用QMovie显示(动画)Gif。在本文中,我们将向您展示如何做到这一点。

这样做很简单,如果需要,您可以显示多个gif。

 

带有PyQt的GIF动画

使用QMovie导入GIF文件并将其显示在标签上。QMovie是用于播放电影的类,但它也可以播放(动画)gif。

下面的程序显示一个动画gif(earth.gif)。
屏幕截图是冻结的镜头,但是gif具有动画效果并可以在窗口中播放。

pyqt动画的gif

您可以将完整路径添加到gif,也可以将其放在与程序相同的目录中。

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QMovie
import sys

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(250, 250)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # create label
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(25, 25, 200, 200))
        self.label.setMinimumSize(QtCore.QSize(200, 200))
        self.label.setMaximumSize(QtCore.QSize(200, 200))
        self.label.setObjectName("label")

        # add label to main window
        MainWindow.setCentralWidget(self.centralwidget)

        # set qmovie as label
        self.movie = QMovie("earth.gif")
        self.label.setMovie(self.movie)
        self.movie.start()

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(window)
    window.show()
    sys.exit(app.exec_())

代码分析

加载所需的模块

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QMovie

设置您的Python PyQt窗口

MainWindow.setObjectName("MainWindow")
MainWindow.resize(250, 250)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")

为要在其中显示的gif创建标签

# create label
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(25, 25, 200, 200))
self.label.setMinimumSize(QtCore.QSize(200, 200))
self.label.setMaximumSize(QtCore.QSize(200, 200))
self.label.setObjectName("label")

将您创建的标签添加到窗口

# add label to main window
MainWindow.setCentralWidget(self.centralwidget)

然后加载gif,将其添加到标签中并播放

# set qmovie as label
self.movie = QMovie("earth.gif")
self.label.setMovie(self.movie)
self.movie.start()

标签

发表评论