class ImagePlayer(QWidget): """ src: https://gist.github.com/Svenito/4000025 """ def __init__(self, filename, parent=None): super().__init__(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.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.loopCount = -1 self.movie.start()
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()
class GifPlayer(QWidget): def __init__(self, title, gifFile): super().__init__(self) self.setWindowTitle(title) self.movie = QMovie(gifFile, QByteArray(), self) size = self.movie.scaledSize() self.setGeometry(200, 200, size.width(), size.height()) self.movie_screen = QLabel() self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 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() button = QPushButton('refresh gif', self) button.setToolTip('This is an example button') button.move(10,10) button.clicked.connect(self.on_click) @pyqtSlot() def on_click(self): self.movie = QMovie(gifFile,QByteArray(), self) self.movie_screen.setMovie(self.movie) self.movie.start() print("done")
class GifPlayer2(QWidget): def __init__(self, title, gifFile): self.movie = QMovie(gifFile, QByteArray(), self) size = self.movie.scaledSize() self.setGeometry(200, 200, size.width(), size.height()) self.movie.setCacheMode(QMovie.CacheAll) self.movie_screen.setMovie(self.movie) self.movie.start() self.movie.loopCount()
def getRandomGif(self): directories = os.listdir( CfgService.get(CfgKey.PAGE_CAPTUREPHOTO_LOADING_GIF_FOLDER)) numberPictures = len(directories) pictureIndex = random.randint(0, numberPictures - 1) gif = QMovie( CfgService.get(CfgKey.PAGE_CAPTUREPHOTO_LOADING_GIF_FOLDER) + "/" + directories[pictureIndex]) gifSize = gif.scaledSize() gifScaleFactor = self.windowSize.height() / gifSize.height() gif.setScaledSize( QSize(gifSize.width() * gifScaleFactor, gifSize.height() * gifScaleFactor)) return gif
class GifPlayer(QWidget): def __init__(self, name, parent=None): QWidget.__init__(self, parent) self.movie = QMovie(name, QByteArray(), self) size = self.movie.scaledSize() self.setGeometry(0, 0, size.width(), size.height()) self.im = Image.open(name).size self.movie_screen = QLabel() self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 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.btn_s = QPushButton('Scale', self) self.btn_s.resize(80, 25) self.btn_s.move(0, 460) self.btn_s.clicked.connect(self.resizeGIF) self.btn_s.setStyleSheet(""" QPushButton:hover { background-color: red; color: white } QPushButton:!hover { background-color: rgb(105, 105, 105); color: white } QPushButton:pressed { background-color: rgb(205, 92, 92); color: white } """) # Этот метод меняет разрешение гиф-анимации в окне result def resizeGIF(self): try: rect = self.geometry() w = rect.width() h = rect.height() w1, h1 = self.im if w > 20 and h > 20: w -= 20 h -= 20 k = h1 / h w = w1 / k size = QtCore.QSize(int(w), h) movie = self.movie_screen.movie() movie.setScaledSize(size) except Exception as er: print(er)