почему моя gif-анимация pyqt5 становится все медленнее и медленнее ...? - PullRequest
0 голосов
/ 19 июня 2020

эти коды получают текущий статус из status.txt и меняют gif, который вы хотите показать, он обнаруживает и изменяет ваш gif 1se c термин, и когда я активирую этот код, файл gif становится все медленнее и медленнее, хотя я не меняю статус, почему это происходит и как я могу предотвратить это ??

import sys, datetime
from PyQt5.QtCore import Qt, QByteArray, QSettings, QTimer, pyqtSlot
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QSizePolicy, QVBoxLayout, 
QAction, QPushButton
from PyQt5.QtGui import QMovie
import random
import time

class GifPlayer(QWidget):
    def __init__(self, title, parent=None):
        QWidget.__init__(self, parent)
        self.emotion='0'
        self.read_file()
        self.gifFile="14.gif"


        self.movie = QMovie(self.gifFile, QByteArray(), self)
        size = self.movie.scaledSize()
        self.setGeometry(400, 400, 400, 400)
        self.setWindowTitle(title)
        self.movie_screen = QLabel()
        self.movie_screen.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.movie_screen.setAlignment(Qt.AlignCenter)
        main_layout = QVBoxLayout()
        main_layout.addWidget(self.movie_screen)
        self.setLayout(main_layout)
        self.movie.setCacheMode(QMovie.CacheAll)
        self.movie_screen.setMovie(self.movie)
        self.movie.start()
        self.movie.loopCount()

        self.timer=QTimer(self)
        self.timer_one = QTimer(self)
        self.timer_one.start(1000)
        self.timer_one.timeout.connect(self.timeout_run)


    def read_file(self):
        with open("status.txt") as file_object:
                self.emotion=file_object.read()
                #print(self.emotion)

    @pyqtSlot()
    def change_gif(self):
        self.read_file()
        if self.emotion=='0':
                self.gifFile='5.gif'
        elif self.emotion=='1':
                self.gifFile='6.gif'
        elif self.emotion=='2':
                self.gifFile='7.gif'
        elif self.emotion=='3':
                self.gifFile='8.gif'
        elif self.emotion=='4':
                self.gifFile='9.gif'
        elif self.emotion=='5':
                self.gifFile='10.gif'
        elif self.emotion=='6':
                self.gifFile='11.gif'
        elif self.emotion=='7':
                self.gifFile='12.gif'
        elif self.emotion=='8':
                self.gifFile='13.gif'
        elif self.emotion=='9':
                self.gifFile='14.gif'
        elif self.emotion=='10':
                self.gifFile='5.gif'
        elif self.emotion=='11':
                self.gifFile='6.gif'
        elif self.emotion=='12':
                self.gifFile='7.gif'
        elif self.emotion=='13':
                self.gifFile='8.gif'
        elif self.emotion=='14':
                self.gifFile='9.gif'
        elif self.emotion=='15':
                self.gifFile='10.gif'
        elif self.emotion=='16':
                self.gifFile='11.gif'
        self.movie = QMovie(self.gifFile,QByteArray(), self)
        self.movie_screen.setMovie(self.movie)
        self.movie.start()


    def speed(self):
        self.movie.setSpeed(100)

    def stopAnimation(self):
        self.movie.stop()

    def timeout_run(self):

        sender = self.sender();
        current_time = datetime.datetime.now()

        if id(sender) == id(self.timer_one):
            self.change_gif()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    player = GifPlayer("PI FACE")
    player.show()
    sys.exit(app.exec_())

для этого кода требуется один файл status.txt с одним номером и один файл gif

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