PyQt5:点击按钮更改GIF

时间:2018-01-18 07:00:14

标签: python pyqt pyqt4 pyqt5

这应该是一个非常初学者的问题。但是我一直试图解决这个问题两天没有成功。

在应用中,有一个QButton和一个QLable。在QLabel我添加了QMovie,以显示GIF。点击QButton我要更改GIF,在list中定义了哪条路径。

问题:该应用仅显示第一个GIF。按钮似乎不起作用。我做错了什么?

但是:请不要更改代码的结构。例如。我希望子函数中定义QLabelreturn定义QLabel

代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import random

list = ['F:\\test1.gif', 'F:\\test2.gif', 'F:\\test3.gif', 'F:\\test4.gif']

class Window(QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent)

        self.resize(600, 600)
        self.initUI()

    def initUI(self):
        self.btn = QPushButton("change", self)
        self.btn.clicked.connect(self.changeGIF)

        self.grid = QVBoxLayout()
        self.grid.addWidget(self.btn)
        self.grid.addWidget(self.changeGIF())
        self.grid.addStretch(1)

        self.setLayout(self.grid)


    def changeGIF(self):
        randomValue = list[random.randint(1, len(list)-1)]
        print(randomValue)

        self.lbl = QLabel()
        self.gif = QMovie(randomValue)
        self.lbl.setMovie(self.gif)
        self.gif.start()

        return self.lbl


if __name__ == '__main__':
    app = QApplication(sys.argv)
    MyApp = Window()
    MyApp.show()
    sys.exit(app.exec_())

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

由于QLabel将负责以随机方式显示GIF,因此建议创建一个只负责该任务的类,在此小部件中,您必须拥有一个更改{{1的方法} QMovie

QLabel