按下按钮时gif无法播放PyQt5

副总裁

我的目标是在按下按钮时播放gif,但由于某种原因它不起作用。我认为这值得一提的是,按键可以停止动画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())
尼克

布尔QMovie :: 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())

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章