在 PyQt4 中显示 Gif 加载

Posted

技术标签:

【中文标题】在 PyQt4 中显示 Gif 加载【英文标题】:Displaying Gif Loading in PyQt4 【发布时间】:2018-07-24 18:36:52 【问题描述】:

我正在尝试在其他代码执行时显示加载 gif。我对 PyQt 非常不熟悉,并尝试按照 this 链接上的代码进行操作,这似乎是执行 gif 的标准方式。我只想要 gif 播放而不想要按钮。这是我目前使用的代码,但它很差。

self.movie = QMovie(coffeeloading.gif, self)
size = self.movie.scaledSize()
self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.movie_screen.setAlignment(Qt.AlignCenter)
self.movie_screen = QLabel()
main_layout = QVBoxLayout()
main_layout.addWidget(self.movie_screen)
self.setLayout(main_layout)
self.movie.setCacheMode(QMovie.CacheAll)
self.movie.setSpeed(100)
self.movie_screen.setMovie(self.movie)
self.movie.start()

这应该在按下按钮并填满 240x320 的整个屏幕后执行,但我不知道该怎么做。我已经阅读了许多其他 *** 和其他链接,但似乎都没有解决如何完成此操作。

【问题讨论】:

有什么问题?博客代码做你想做的事。 运行此代码时,我得到未定义的咖啡加载,这是我的 gif,当我在引号中给出完整目录时,我收到此错误:TypeError:参数与任何重载调用不匹配:QMovie(父:QObject = None):参数 1 具有意外类型 'str' QMovie(QIODevice,格式:QByteArray = QByteArray(),父:QObject = None):参数 1 具有意外类型 'str' QMovie(object,格式:QByteArray = QByteArray(), parent: QObject = None): 参数 2 具有意外类型'MainWindow' 【参考方案1】:

您也可以在此处使用this 类。

QtWaitingSpinner 扩展了 QtWidgets.QWidget 类,您只需运行即可启动微调器

your_QtWaitingSpinnerObject.start()

您也可以查看this的答案。

【讨论】:

【参考方案2】:
# -*- coding: utf-8 -*-

import sys

from PySide.QtGui import *
from PySide.QtCore import *

class test_widget(QWidget):

    m_play_state = False
    def __init__(self):
        super(test_widget, self).__init__()
        self.__ui__()

    def __ui__(self):

        t_lay_parent = QVBoxLayout()
        self.m_label_gif = QLabel()

        self.m_button_play = QPushButton("Play")
        t_lay_parent.addWidget(self.m_label_gif)
        t_lay_parent.addWidget(self.m_button_play)

        self.m_movie_gif = QMovie("loding.gif")
        self.m_label_gif.setMovie(self.m_movie_gif)
        self.m_label_gif.setScaledContents(True)
        self.m_label_gif.hide()

        self.setLayout(t_lay_parent)
        self.m_button_play.clicked.connect(self.slt_play)

    def slt_play(self):
        if self.m_play_state:
            self.m_label_gif.hide()
            self.m_movie_gif.stop()
            self.m_play_state = False
        else:
           self.m_label_gif.show()
           self.m_movie_gif.start()
           self.m_play_state = True

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = test_widget()
    win.show()
    sys.exit(app.exec_())

【讨论】:

以上是关于在 PyQt4 中显示 Gif 加载的主要内容,如果未能解决你的问题,请参考以下文章

想要在数据表中显示加载器 GIF

Android 加载gif图片强大框架(支持预加载缓存,还支持显示静态图片,一行代码全搞定)

在页面卸载之前显示加载 GIF

使用 Glide 显示 GIF 文件(图像加载和缓存库)

android 怎样显示gif动画

如何延迟从页面加载开始显示Gif?