PyQt4 animierte gif

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

Hallo,

ich versuche PyQt4 zu lernen und möchte ein animiertes gif in einem Movie Player abspielen.
Dabei ist mir aufgefallen, dass alle in PyQt Examples and Demos angeführten Beispiele funktionieren nur der Movie Player, welcher unter Widgets zu finden ist, nicht. Es ist nur ein Fenster mit den Buttons zu sehen aber das ausgewählte animierte gif wird nicht angezeigt.

Habe dann mit folgenden Code mein Glück versucht funktioniert aber auch nicht :oops:

Code: Alles auswählen

import sys
from PyQt4 import QtCore, QtGui

class MoviePlayer(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.movieScreen = QtGui.QLabel()
        
        self.movieScreen.setText(self.tr("Hallo"))
        self.movieScreen.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)        
        self.movieScreen.setAlignment(QtCore.Qt.AlignCenter)

        mainLayout = QtGui.QVBoxLayout()
        mainLayout.addWidget(self.movieScreen)
        self.setLayout(mainLayout)
                
        self.resize(400, 400)
        self.setWindowTitle(self.tr("Movie Player"))

        movie = QtGui.QMovie("C:/AQT/EuroAnimation.gif", QtCore.QByteArray(), self)
        movie.setCacheMode(QtGui.QMovie.CacheAll)

        movie.setSpeed(100)

        self.movieScreen.setMovie(movie)
        
        movie.start()
        

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    player = MoviePlayer()
    player.show()
    sys.exit(app.exec_())
        
Arbeite mit Windows Xp, Python2.6.

Würde mich über ein paar gute Ideen :idea: von Euch freuen.

Vielen Dank und Gruß
flyingpy
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

In Windows werden Pfade so angegeben:

Code: Alles auswählen

        movie = QtGui.QMovie("C:\\AQT\\EuroAnimation.gif", QtCore.QByteArray(), self) 
BlackJack

@apollo13: Sicher? Eigentlich ist die Eingabeaufforderung bzw. cmd.exe/command.com die einzige Stelle von Windows, die nicht mit '/' als Pfadtrenner klar kommt. Die API nimmt auch '/'.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

BlackJack hat geschrieben:@apollo13: Sicher? Eigentlich ist die Eingabeaufforderung bzw. cmd.exe/command.com die einzige Stelle von Windows, die nicht mit '/' als Pfadtrenner klar kommt. Die API nimmt auch '/'.
Keine Ahnung, ich verwende kein Windows, aber einen Versuch ist es wert, da das Programm ansich okay ist. Ich hab auch sicherheitshalber in „Python for Kids“ nachgeschaut, weil das das einizge Buch war, von dem ich auf die schnelle wusste, dass es ansich für Windows geschrieben ist und dort werden die Pfade immer so angegeben (war übrigens ein super Buch zum Python anfangen, ach sind diese Zeiten lang her^^)
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

Zuerst einmal danke für Euer Interesse und Eure Hilfe!

Hab's probiert und festgestellt, dass sowohl '\\' als auch '\' und '/' als Pfadtrenner funktionieren.


apollo13 hat folgendes geschrieben:
Keine Ahnung, ich verwende kein Windows, aber einen Versuch ist es wert, da das Programm ansich okay ist.
Der Versuch ist leider fehlgeschlagen. Ist auch eigenartig, dass das Beispiel vom Movie Player in "PyQt Examples and Demos" nicht funktioniert.
Vielleicht kann mir jemand mitteilen ob es bei ihm funktioniert wenn er mit diesem Movie Player ein animiertes gif abspielen will.

Hab auch irgendwo im Internet gelesen es könnte eventuell mit der Lizenz etwas zu tun haben kann es mir aber nicht vorstellen. Was meint Ihr dazu?

Danke Gruß
flyingpy
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

Habe das gerade mal unter Linux gestartet, funktioniert einwandfrei.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Wie gesagt, dein Code funktioniert hier einwandfrei :) (Linux)
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

Hab den Code auf zwei anderen Windows-Rechner probiert funktioniert auch bei diesen nicht. Vermute es liegt an Windows.:evil:
Hat jemand eine Idee wie man diesen Code ändern muss damit er unter Windows funktioniert?

Danke für Eure Antworten!

Gruß
flyingpy
hwm
User
Beiträge: 39
Registriert: Mittwoch 20. April 2005, 23:33

Ich würde mal vermuten, dass die Pfad-Angabe nicht stimmt. Ansonsten gibt es nur eine Empfehlung: Windows shreddern und ein richtiges Betriebssystem installieren :)
flyingpy
User
Beiträge: 13
Registriert: Donnerstag 10. Juli 2008, 07:39
Wohnort: Wr. Neustadt

hwm hat folgendes geschrieben:
Ich würde mal vermuten, dass die Pfad-Angabe nicht stimmt. Ansonsten gibt es nur eine Empfehlung: Windows shreddern und ein richtiges Betriebssystem installieren
Habe mit folgenden Code ein jpg Bild versucht zu laden, welches im selben Ordner liegt wie die animierte Grafik und alles hat funktioniert! Nur das mit dem Movie Player nicht!
Mit "ein richtiges Betriebssystem installieren" hast aber recht, schön langsam nervt Windows mich!!!

Code: Alles auswählen


import sys
from PyQt4 import QtGui, QtCore

class MeinWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.grafik = QtGui.QImage("C:/AQT/sabine.jpg")
        self.ziel = QtCore.QRect(10, 10, 280, 200)
        self.quelle = QtCore.QRect(0, 0,
                                   self.grafik.width(),
                                   self.grafik.height())

    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.drawImage(self.ziel, self.grafik, self.quelle)
        
        
app = QtGui.QApplication(sys.argv)
widget = MeinWidget()
widget.resize(300, 220)
widget.show()
sys.exit(app.exec_())
Lg Grüße
flyingpy
Antworten