GIF не играет при нажатии кнопки PyQt5 - PullRequest
0 голосов
/ 19 апреля 2020

Моя цель - сыграть гифку при нажатии кнопки, но по какой-то причине она не работает. Я думаю, что стоит упомянуть, что кнопка может остановить анимацию с self.movie.stop(), но она не работает вообще с self.movie.start(), я уверен, что кнопка действительно вызывает функцию, потому что оператор print, который я вставил в , но self.movie.start() не работает

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton
from PyQt5.QtCore import Qt, QTimer, QSize
from PyQt5.QtGui import QMovie

class APP(QWidget):
    def __init__(self):
        super().__init__()
        self.setStyleSheet("background-color: white;")
        self.setGeometry(0, 0, 300, 300)

        self.movie = QMovie(r'C:\Users\Name\Desktop\Desktop\de.gif')
        self.movie.setScaledSize(QSize(300,225))

        self.btn = QPushButton(self)
        self.btn.clicked.connect(self.strt)
        self.btn.setGeometry(100,130,150,50)

        self.label = QLabel(self)
        self.label.setMovie(self.movie)

        self.show()

    def strt(self):
        print("Button pressed")
        self.movie.start()


app = QApplication(sys.argv)
demo = APP()
app.exit(app.exec())

1 Ответ

0 голосов
/ 19 апреля 2020

bool QMov ie :: jumpToFrame (int frameNumber)

Переход к номеру кадра frameNumber. Возвращает true в случае успеха; в противном случае возвращает false.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton
from PyQt5.QtCore import Qt, QTimer, QSize
from PyQt5.QtGui import QMovie

class APP(QWidget):
    def __init__(self):
        super().__init__()
        self.setStyleSheet("background-color: white;")
        self.setGeometry(0, 0, 300, 300)

#        self.movie = QMovie(r'C:\Users\Name\Desktop\Desktop\de.gif')
        self.movie = QMovie(self)                                       # + self
        self.movie.setFileName('D:/_Qt/__Qt/img/Fo2BxBK.gif')           # +
        self.movie.setScaledSize(QSize(300,225))
        self.movie.jumpToFrame(0)                                       # +

        self.label = QLabel(self)                                       # +
        self.label.setMovie(self.movie)                                 # +

        self.btn = QPushButton("Start", self)
        self.btn.setCheckable(True)                                     # +
        self.btn.clicked.connect(self.strt)
        self.btn.setGeometry(100,230,150,50)

#        self.label = QLabel(self)
#        self.label.setMovie(self.movie)

        self.show()

    def strt(self, state):                                               # + state
        print("Button pressed", state)
        if state:
            self.movie.start()
            self.btn.setText("Stop")
        else:
            self.movie.stop()
            self.btn.setText("Start")


app = QApplication(sys.argv)
demo = APP()
app.exit(app.exec())

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...