2017-01-18 2 views
-1

я пытаюсь добавить GIF в задней части моего кода вверх я не могу показаться, что заставить его работать здесь мой код я работаю WihtPython PyQT Добавить фоновую GIF

import sys 
import webbrowser 
import random 
import time 
import os 
import subprocess 
from PyQt4.QtCore import QSize, QTimer 
from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, QWidget, QIcon, QLabel, QPainter, QPixmap, QMessageBox, QAction, QKeySequence, QFont, QFontMetrics, QMovie 
from PyQt4 import QtGui 


class UIWindow(QWidget): 
    def __init__(self, parent=None): 
     super(UIWindow, self).__init__(parent) 
     self.resize(QSize(600, 750)) 
     self.ToolsBTN = QPushButton('tab', self) 
     self.ToolsBTN.resize(100,40) 
     self.ToolsBTN.move(60, 300) 

     self.CPS = QPushButton('tab1', self) 
     self.CPS.resize(100,40) 
     self.CPS.move(130,600) 

     self.Creator = QPushButton('tab2', self) 
     self.Creator.resize(100,40) 
     self.Creator.move(260, 50) 

class MainWindow(QMainWindow,): 

    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     self.setGeometry(50, 50, 600, 750) 
     self.setFixedSize(600, 750) 
     self.startUIWindow() 
    def startUIWindow(self): 
     self.Window = UIWindow(self) 
     self.setWindowTitle("My Program") 
     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = MainWindow() 
    sys.exit(app.exec_()) 

так что это все у меня есть прямо сейчас, и я пытаюсь заставить свой Dance.gif играть в спину, но он не работает для меня, если кто-то может помочь мне с этим, это было бы потрясающе!

+1

Что вы имеете в виду "это не работает для меня"? В коде вы даже не пытаетесь установить gif в качестве фона. – ImportanceOfBeingErnest

+1

Возможный дубликат [Анимация с использованием pixmap или последовательности изображений в Python с QT4] (http://stackoverflow.com/questions/13783107/animate-using-a-pixmap-or-image-sequence-in-python-with- qt4) – ImportanceOfBeingErnest

ответ

1

Вы должны воспроизвести фильм с помощью QMovie, и каждый раз, когда он меняет изображение, вы должны обновить фон с помощью текущей pixmap.

добавить следующий код в __ init __ функции:

self.movie = QMovie("{filename}.gif") 
self.movie.frameChanged.connect(self.repaint) 
self.movie.start() 

И мы реализовали функцию paintEvent:

def paintEvent(self, event): 
    currentFrame = self.movie.currentPixmap() 
    frameRect = currentFrame.rect() 
    frameRect.moveCenter(self.rect().center()) 
    if frameRect.intersects(event.rect()): 
     painter = QPainter(self) 
     painter.drawPixmap(frameRect.left(), frameRect.top(), currentFrame) 

Полный код:

import sys 
from PyQt5.QtCore import QSize 
from PyQt5.QtGui import QMovie, QPainter, QPixmap 
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget 


class UIWindow(QWidget): 
    def __init__(self, parent=None): 
     super(UIWindow, self).__init__(parent) 
     self.resize(QSize(600, 750)) 
     self.ToolsBTN = QPushButton('tab', self) 
     self.ToolsBTN.resize(100, 40) 
     self.ToolsBTN.move(60, 300) 

     self.CPS = QPushButton('tab1', self) 
     self.CPS.resize(100, 40) 
     self.CPS.move(130, 600) 

     self.Creator = QPushButton('tab2', self) 
     self.Creator.resize(100, 40) 
     self.Creator.move(260, 50) 


class MainWindow(QMainWindow): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     self.setGeometry(50, 50, 600, 750) 
     self.setFixedSize(600, 750) 
     self.startUIWindow() 

     self.movie = QMovie("animated-dancing-image-0028.gif") 
     self.movie.frameChanged.connect(self.repaint) 
     self.movie.start() 

    def startUIWindow(self): 
     self.Window = UIWindow(self) 
     self.setWindowTitle("My Program") 
     self.show() 

    def paintEvent(self, event): 
     currentFrame = self.movie.currentPixmap() 
     frameRect = currentFrame.rect() 
     frameRect.moveCenter(self.rect().center()) 
     if frameRect.intersects(event.rect()): 
      painter = QPainter(self) 
      painter.drawPixmap(frameRect.left(), frameRect.top(), currentFrame) 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = MainWindow() 
    sys.exit(app.exec_()) 

GIF:

enter image description here

Выход:

enter image description here

enter image description here

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