Seite 1 von 1

PyQt4 animierte gif

Verfasst: Sonntag 31. Mai 2009, 13:37
von flyingpy
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

Verfasst: Sonntag 31. Mai 2009, 21:24
von apollo13
In Windows werden Pfade so angegeben:

Code: Alles auswählen

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

Verfasst: Sonntag 31. Mai 2009, 21:31
von 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 '/'.

Verfasst: Montag 1. Juni 2009, 08:52
von apollo13
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^^)

Verfasst: Montag 1. Juni 2009, 17:09
von flyingpy
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

Verfasst: Montag 1. Juni 2009, 18:44
von hwm
Habe das gerade mal unter Linux gestartet, funktioniert einwandfrei.

Verfasst: Dienstag 2. Juni 2009, 11:53
von apollo13
Wie gesagt, dein Code funktioniert hier einwandfrei :) (Linux)

Verfasst: Dienstag 2. Juni 2009, 20:31
von flyingpy
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

Verfasst: Dienstag 2. Juni 2009, 23:32
von hwm
Ich würde mal vermuten, dass die Pfad-Angabe nicht stimmt. Ansonsten gibt es nur eine Empfehlung: Windows shreddern und ein richtiges Betriebssystem installieren :)

Verfasst: Mittwoch 3. Juni 2009, 14:58
von flyingpy
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