سؤال

لدي حاليا صورة PIL التي أرغب في عرضها على نافذة PYQT. أعلم أن هذا يجب أن يكون سهلا، لكنني لا أستطيع أن أجد في أي مكان كيفية القيام بذلك. هل يمكن لأي شخص أن يعطيني يد في هذا؟ هنا هو رمز النافذة لدي حاليا:

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

تحرير: وفقا لبرمجة واجهة المستخدم الرسومية السريعة مع كيو تي وثيمون:

وفقا لتوثيق PYQT، يتم تحسين qpixMaps لعرض شاشة على الشاشة (لذلك فهي سريعة السحب)، ويتم تحسين تشيمات حول التحرير (وهذا هو السبب في أننا استخدمناها لعقد بيانات الصورة).

لدي خوارزمية معقدة من شأنها أن تولد صورا أريد إظهارها على نافذتي. سيتم إنشاؤها بسرعة كبيرة، حتى يستقبل المستخدمون تماما مثل الرسوم المتحركة (يمكن أن يكون هناك مثل 15+، 20+ منها في الثانية). يجب أن أستخدم qpixmaps أو Qimages؟

هل كانت مفيدة؟

المحلول

جرب شيئا من هذا القبيل، يمكنك استخدامه http://svn.effbot.org/public/stuff/sandbox/pil/imageqt.py. لتحويل أي صورة PIL إلى Qimage

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

نصائح أخرى

reparging إلى هذه المناقشة, ، ستكون أسرع طريقة لاستخدام Glpainter من أجل الاستفادة من أداء بطاقة الرسوم البيانية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top