【发布时间】:2020-04-20 01:43:34
【问题描述】:
我的目标是在按下按钮时播放 gif,但由于某种原因它不起作用。我认为值得一提的是,该按钮可以使用self.movie.stop() 停止动画,但它对self.movie.start() 根本不起作用,我确信该按钮确实调用了该函数,因为我放入了打印语句,但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())
【问题讨论】:
-
我很困惑。你说你可以停止动画,但是你怎么知道它没有开始呢?
-
对不起,如果我将
self.movie.start()放在主块中,动画确实会开始,但是一旦我放入strt()function,它就不会像我想要的那样开始。 -
我猜如果您按照建议的答案使用
self.movie.jumpToFrame(0),它也适用于您的代码,对吧? -
是的,幸运的是,它确实按预期工作,我猜当我不调用
jumpToFrame()函数时,gif 没有加载,因为当我试图让它工作时,每个当我运行代码时它给了我一个黑屏。 -
我将在一个单独的答案中解释它,因为当前的答案对这种行为的原因并不是很具体。