如何使用PySide2中的QLabel加载图像

时间:2018-05-07 08:20:18

标签: python-3.x image qlabel qpixmap pyside2

我是编码和python的初学者。我读到如果你想开发一个更复杂的应用程序并且PyQt对许可有问题,那么tkinter有点“基本”。这就是为什么我选择PySide2来开发this kind of project,但到目前为止发现文档相对稀缺。这是正确的选择吗?

我目前的编码问题如下:我正在尝试使用PySide2加载图像但没有成功。这是我的两次尝试的代码:

尝试N°1:

import sys
import PySide2
from PySide2.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
img = PySide2.QtGui.QImage("/Users/mymac/Downloads/ecg_measure.png")
pixmap=PySide2.QtGui.QPixmap(img)
label = PySide2.QtWidgets.QLabel.setPixmap(pixmap)
label.show()
app.exec_()

我收到以下消息:

Traceback (most recent call last):

File "<ipython-input-1-86961df4959d>", line 8, in <module>
label = PySide2.QtWidgets.QLabel.setPixmap(pixmap)

TypeError: descriptor 'setPixmap' requires a 'PySide2.QtWidgets.QLabel' object but received a 'PySide2.QtGui.QPixmap'

使用Traceback中的信息,我尝试了以下尝试N°2:

import sys
import PySide2
from PySide2.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
img = PySide2.QtGui.QImage("/Users/mymac/Downloads/ecg_measure.png")
pixmap=PySide2.QtGui.QPixmap(img)
lab=PySide2.QtWidgets.QLabel(pixmap)
PySide2.QtWidgets.QLabel.setPixmap(lab)
app.exec_()

我收到以下错误信息:

Traceback (most recent call last):

File "<ipython-input-1-61b41e4b2f63>", line 8, in <module>
lab=PySide2.QtWidgets.QLabel(pixmap)

TypeError: 'PySide2.QtWidgets.QLabel' called with wrong argument types:
PySide2.QtWidgets.QLabel(PySide2.QtGui.QPixmap) Supported signatures:
PySide2.QtWidgets.QLabel(PySide2.QtWidgets.QWidget = None, 
PySide2.QtCore.Qt.WindowFlags = Qt.WindowFlags())
PySide2.QtWidgets.QLabel(unicode, PySide2.QtWidgets.QWidget = None, PySide2.QtCore.Qt.WindowFlags = Qt.WindowFlags())

1 个答案:

答案 0 :(得分:1)

以下是您的代码应该是什么样的:

import sys
from PySide2 import QtCore, QtGui, QtWidgets

app = QtWidgets.QApplication(sys.argv)

pixmap = QtGui.QPixmap('/Users/mymac/Downloads/ecg_measure.png')
label = QtWidgets.QLabel()
label.setPixmap(pixmap)    
label.show()

app.exec_()

但是,QLabel可能不适合您要开发的项目。您很可能需要使用Graphics View Framework。有关提供平移和缩放的基本演示,请参阅this image viewer example。它是使用PyQt5编写的,但您可以轻松地将其转换为PySide2 - 只需将PyQt5替换为文件顶部导入中的PySide2,并将pyqtSignal替换为Signal第4行。该示例还需要当前目录中名为“image.jpg”的图像文件(或者您只需编辑loadImage方法中的默认路径)。

如果您对PySide / PyQt没有太多经验,我建议您使用this tutorial。它是为PyQt5编写的,但PySide2的代码将是99%相同。如上所述,您通常只需更改导入并删除pyqtpyqtSignal等API的一些pyqtSlot前缀。可以找到完整的PySide2文档here,完整的Qt文档是here