PyQt - 从URL设置QLabel图像

Edv*_*kas 3 python pyqt

我一直在尝试从URL设置图像到QLabel.但我没有运气.以下是我现在尝试做的事情:

import urllib, cStringIO
img_file = cStringIO.StringIO(urllib.urlopen(image_url).read())
image_file = Image.open(img_file)
Run Code Online (Sandbox Code Playgroud)

然后将其设置为QImage:

final_image = QImage(image_file)

self.emit(SIGNAL("finished(QImage)"),
    final_image
)
Run Code Online (Sandbox Code Playgroud)

图像将从线程传递回主GUI中的方法.

def set_image(self, final_image):
    self.main_picture_pixmap = QPixmap.fromImage(final_image).scaled(
        QSize(self.picture_label.size()), 
        Qt.KeepAspectRatio, 
        Qt.FastTransformation
    )
    self.picture_label.setPixmap(self.main_picture_pixmap)
Run Code Online (Sandbox Code Playgroud)

这样做我得到错误:

QPixmap::scaled: Pixmap is a null pixmap
Run Code Online (Sandbox Code Playgroud)

无论如何要解决这个问题,还是以不同的方式解决这个问题?

小智 6

将图像从网址加载到图标的简单公式.

from PyQt4.QtGui import QPixmap, QIcon
import urllib

url = 'http://example.com/image.png'    
data = urllib.urlopen(url).read()
pixmap = QPixmap()
pixmap.loadFromData(data)
icon = QIcon(pixmap)
Run Code Online (Sandbox Code Playgroud)


mat*_*ata 5

QImage.load采用文件名,而不是图像数据.如果你想这样做,你需要使用QImage.loadFromData.