Qt 第二次设置QMovie文件名无效
我将初始电影文件设置为:Qt 第二次设置QMovie文件名无效,qt,pyqt,Qt,Pyqt,我将初始电影文件设置为: self.movie = QMovie("dotGreenBlack.gif", QByteArray(), self) 在运行时,我想通过设置: self.movie.setFileName("dotGreyStatic.gif") 但这会导致原始设置文件“dotGreenBlack.gif”的帧冻结 我还需要做什么才能在运行时更改Gif动画 以下是完整代码: from PyQt4 import QtCore, QtGui from PyQt4.QtGui imp
self.movie = QMovie("dotGreenBlack.gif", QByteArray(), self)
在运行时,我想通过设置:
self.movie.setFileName("dotGreyStatic.gif")
但这会导致原始设置文件“dotGreenBlack.gif”的帧冻结
我还需要做什么才能在运行时更改Gif动画
以下是完整代码:
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class ImagePlayer(QWidget):
def __init__(self, filename, title, parent=None):
QWidget.__init__(self, parent)
# Load the file into a QMovie
self.movie = QMovie(filename, QByteArray(), self)
size = self.movie.scaledSize()
self.setGeometry(200, 200, size.width(), size.height())
self.setWindowTitle(title)
self.movie_screen = QLabel()
# Make label fit the gif
self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.movie_screen.setAlignment(Qt.AlignCenter)
# Create the layout
main_layout = QVBoxLayout()
main_layout.addWidget(self.movie_screen)
self.setLayout(main_layout)
# Add the QMovie object to the label
self.movie.setCacheMode(QMovie.CacheAll)
self.movie.setSpeed(100)
self.movie_screen.setMovie(self.movie)
self.movie.start()
self.movie.loopCount()
self.movie.setFileName("dotGreyStatic.gif")
self.movie_screen.setMovie(self.movie)
if __name__ == "__main__":
gif = "dotGreenBlack.gif"
app = QApplication(sys.argv)
app.setStyleSheet("QWidget { background-color: black }")
player = ImagePlayer(gif, "was")
player.show()
sys.exit(app.exec_())
本例中使用的Gif图标:
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class ImagePlayer(QWidget):
def __init__(self, filename, title, parent=None):
QWidget.__init__(self, parent)
# Load the file into a QMovie
self.movie = QMovie(filename, QByteArray(), self)
size = self.movie.scaledSize()
self.setGeometry(200, 200, size.width(), size.height())
self.setWindowTitle(title)
self.movie_screen = QLabel()
# Make label fit the gif
self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.movie_screen.setAlignment(Qt.AlignCenter)
# Create the layout
main_layout = QVBoxLayout()
main_layout.addWidget(self.movie_screen)
self.setLayout(main_layout)
# Add the QMovie object to the label
self.movie.setCacheMode(QMovie.CacheAll)
self.movie.setSpeed(100)
self.movie_screen.setMovie(self.movie)
self.movie.start()
self.movie.loopCount()
self.movie.setFileName("dotGreyStatic.gif")
self.movie_screen.setMovie(self.movie)
if __name__ == "__main__":
gif = "dotGreenBlack.gif"
app = QApplication(sys.argv)
app.setStyleSheet("QWidget { background-color: black }")
player = ImagePlayer(gif, "was")
player.show()
sys.exit(app.exec_())
您只需停止并重新启动电影:
self.movie.stop()
self.movie.setFileName("dotGreyStatic.gif")
self.movie.start()
谢谢你,这对我有用。停止-开始是新分配的电影播放器吗?@user1767754。不,我认为这只是重复使用现有的一个。