2015-07-10 3 views
1

я устанавливаю Initial файл фильма, как это:QMovie установки файла второй раз не будет работать

self.movie = QMovie("dotGreenBlack.gif", QByteArray(), self) 

Во время выполнения, я хочу, чтобы изменить его настройки:

self.movie.setFileName("dotGreyStatic.gif") 

Но это приводит к кадру -freeze файла с надписью «dotGreenBlack.gif»

Что-нибудь еще, что мне нужно сделать, чтобы изменить Gif-Animation во время выполнения?

Вот fullcode:

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 Значки, используемые в этом примере:

enter image description here enter image description here

ответ

1

Вам просто нужно остановить и перезапустить фильм:

self.movie.stop() 
    self.movie.setFileName("dotGreyStatic.gif") 
    self.movie.start() 
+0

Спасибо, что сработало для меня. это остановка начала нового размещения проигрывателя? – user1767754

+0

@ пользователь1767754. Нет, я думаю, что это просто повторное использование существующего. – ekhumoro

Смежные вопросы