Не показывает GIF в Qlabel
Прошу помочь. Создаю программу для отображения GIF на PyQt5 (Qt Designer). Но программа не отображает GIF.
Программа не выдает ошибку.
OS Windows 10 Домашняя 2004 19041.928
Python 3.9.5
PyQT '5.15.4'
Код
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("1.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_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
У меня ваш пример работает. У вас либо битая гифка, либо указан неверно путь к гифке, либо добавьте
self.movie.setScaledSize(QtCore.QSize(200, 200))
void QMovie::setScaledSize(const QSize &size)
Устанавливает масштабированный размер кадра по размеру.
и вам не рекомендую изменять код, сгенерированный Qt Designer. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
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("img/Fo2BxBK.gif")
self.movie.setScaledSize(QtCore.QSize(200, 200)) # +++
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_())

