Frage

Ich habe derzeit ein PIL -Bild, das ich gerne in einem Pyqt -Fenster anzeigen möchte. Ich weiß, dass dies einfach sein muss, aber ich kann nirgendwo finden, wie es geht. Könnte mir jemand die Hand geben? Hier ist der Code des Fensters, den ich derzeit habe:

import sys
from PyQt4 import QtGui

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

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Window')


app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

Bearbeiten: Laut Rapid GUI -Programmierung mit QT und Python:

Laut der Dokumentation von PYQT sind QPIXMAPs für die Anzeige auf dem Bildschirm optimiert (so dass sie schnell zeichnen), und Qimages sind für die Bearbeitung optimiert (weshalb wir sie verwendet haben, um die Bilddaten zu halten).

Ich habe einen komplexen Algorithmus, der Bilder generiert, die ich in meinem Fenster zeigen möchte. Sie werden ziemlich schnell erstellt, so dass sie für den Benutzer genauso aussehen wie eine Animation (es kann 15+ und 20+ pro Sekunde geben). Soll ich dann Qpixmaps oder Qimages verwenden?

War es hilfreich?

Lösung

Probieren Sie so etwas aus, Sie können verwenden http://svn.effbot.org/public/stuff/sandbox/pil/imageqt.py Um jedes PIL -Bild in Qimage umzuwandeln

import sys
from PyQt4 import QtGui
from PIL import Image

def get_pil_image(w, h):
    clr = chr(0)+chr(255)+chr(0)
    im = Image.fromstring("RGB", (w,h), clr*(w*h))
    return im

def pil2qpixmap(pil_image):
    w, h = pil_image.size
    data = pil_image.tostring("raw", "BGRX")
    qimage = QtGui.QImage(data, w, h, QtGui.QImage.Format_RGB32)
    qpixmap = QtGui.QPixmap(w,h)
    pix = QtGui.QPixmap.fromImage(qimage)
    return pix

class ImageLabel(QtGui.QLabel):
    def __init__(self, parent=None):
        QtGui.QLabel.__init__(self, parent)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Window')

        self.pix = pil2qpixmap(get_pil_image(50,50))
        self.setPixmap(self.pix)

app = QtGui.QApplication(sys.argv)
imageLabel = ImageLabel()
imageLabel.show()
sys.exit(app.exec_())

Andere Tipps

Regierung zu Diese Diskussion, Der schnellste Weg wäre die Verwendung von Glpainter, um der Grafikkartenleistung zu profitieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top