Seite 1 von 1

Bildanzeigen funktioniert nicht bei PyQt

Verfasst: Mittwoch 7. Januar 2009, 21:45
von INFACT
Hallo:

Code: Alles auswählen

from PyQt4 import QtCore, QtGui
import sys

def ZeigeBild(Bild):
    class FotoGui(QtGui.QWidget):
        def __init__(self,parent=None):
            QtGui.QWidget.__init__(self,parent)
            self.grafik=QtGui.QImage(Bild)
            self.ziel=QtCore.QRect(10,10,130,130)
            self.quelle=QtCore.QRect(0,0,
                                     self.grafik.width(),
                                     self.grafik.height())
        def PainEvent(self, event):
            painter=QtGui.QPainter(self)
            painter.drawImage(self.ziel,self.grafik,self.quelle)

    
    app=QtGui.QApplication(sys.argv)
    widget=FotoGui()
    widget.resize(150,150)
    widget.show()
    sys.exit(app.exec_())
Wenn ich dieses Skript ausführe:

Code: Alles auswählen

ZeigeBild("Test.bmp")
Passiert Garnichts, bisauf dass ich ein leeres Widget habe, auf dem aber kein Bild ist
Was mache ich denn Falsch?

Code: Alles auswählen

frage= "Kann PyQt keine Bitmaps lesen?"
formate= "Was es in PyQt für formate gibt"
Fehler= "Warum ist das nur ein leerer Gui?"

If frage:
    print formate
Else:
    print Feher
Bitte :)

Verfasst: Mittwoch 7. Januar 2009, 22:55
von cofi
Du solltest vielleicht die richtige Methode überschreiben: QWidget.paintEvent

Verfasst: Mittwoch 7. Januar 2009, 23:11
von Panke
Oder du lädst das Bild in ein QPixmap und nutzt ein QLabel zum anzeigen.

Verfasst: Donnerstag 8. Januar 2009, 16:46
von INFACT
Ich habe das script jetzt so umgeschireben:

Code: Alles auswählen

from PyQt4 import QtCore, QtGui
import sys

from PyQt4.QtCore import *
from PyQt4.QtGui import *

def ZeigeBild(Bild):
    
    class FotoGui(QGraphicsPixmapItem):
        def __init__(self,Bild,parent=None):
            QGraphicsPixmapItem.__init__(self, QPixmap(Bild)) 

    widget=FotoGui(Bild)
    widget.show()


    
app=QApplication(sys.argv)
ZeigeBild("Test.bmp")
Aber immernoch kein Bild^^

Vielleicht liegt es daran, dass ich nicht genau weiß wie ich das mit einem QLabel machen soll.
Auch mit mehrmaligem herumprobieren und Lösungen suchen klappte es nicht...
:cry:

Verfasst: Donnerstag 8. Januar 2009, 17:32
von cofi
Erbe lieber von QLabel und benutze die Methode `setPixmap' zum Anzeigen.

Aber sag mal ... du kennst doch die Doku oder? Da steht alles drin.

Verfasst: Donnerstag 8. Januar 2009, 20:31
von INFACT
Ja aber ich wusste nicht so recht was ich hiermit :
QLabel.setPixmap (self, QPixmap)

This method is also a Qt slot with the C++ signature void setPixmap(const QPixmap&).

Anfangen sollte.

So doof das auch klingt:
*Ich hatte einen Geitesblitz und dann hatte ichs raus*

oder auch durch eure hilfe :roll: :lol: :D