2017-01-18 3 views
-1

Ich versuche, ein gif in der Rückseite meines Code addieren kann ich nicht scheinen, um es hier ist mein Code zu bekommen arbeiten ich arbeite wihtPython pyqt Hintergrund gif hinzufügen

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_()) 

so ist, dass alles, was ich habe gerade jetzt und ich versuche, meine Dance.gif in den Rücken zu spielen, aber es funktioniert nicht für mich, wenn mir jemand damit helfen könnte, das wäre erstaunlich!

+1

Was meinst du mit "es ist nicht für mich arbeiten"? Im Code versuchen Sie nicht einmal, das gif als Hintergrund zu setzen. – ImportanceOfBeingErnest

+1

Mögliches Duplikat von [Animiere mithilfe einer Pixmap oder Bildsequenz in Python mit QT4] (http://stackoverflow.com/questions/13783107/animate-using-a-pixmap-or-image-sequence-in-python-with- qt4) – ImportanceOfBeingErnest

Antwort

1

Sie müssen den Film mit QMovie reproduzieren, und jedes Mal, wenn Sie das Bild ändern, müssen Sie den Hintergrund mit der aktuellen Pixmap aktualisieren.

den nächsten Code in __ init __ Funktion hinzufügen:

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

Und wir die paintEventO Funktion implementiert:

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) 

komplette Code:

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

Ausgang:

enter image description here

enter image description here