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

ecj*_*cjb 3 image qpixmap python-3.x qlabel pyside2

我是编码和 python 的初学者。我读到 tkinter 有点“基础”,如果你想开发一个有点复杂的应用程序,而 PyQt 在许可方面有问题。这就是为什么我选择PySide2来开发这种项目,但发现目前文档相对较少。这是正确的选择吗?

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

尝试 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_()
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

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'
Run Code Online (Sandbox Code Playgroud)

使用回溯中的信息,我尝试了以下尝试 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_()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

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())
Run Code Online (Sandbox Code Playgroud)

ekh*_*oro 7

您的代码应该如下所示:

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_()
Run Code Online (Sandbox Code Playgroud)

但是,aQLabel可能不适合您要开发的项目。您很可能需要使用图形视图框架。有关提供平移和缩放的基本演示,请参阅此图像查看器示例。它是利用PyQt5写的,但你可以很容易地将其转换为PySide2 -只需更换PyQt5PySide2在该文件的顶部的进口,并更换pyqtSignalSignal上线4例子还需要在名为“image.jpg的”图像文件当前目录(或者您可以只编辑方法中的默认路径loadImage)。

如果您对 PySide/PyQt 没有太多经验,我建议您阅读本教程。它是为 PyQt5 编写的,但 PySide2 的代码将 99% 相同。如上所述,您通常只需要更改导入并删除pyqtAPI的一些前缀,例如pyqtSignalpyqtSlot。完整的 PySide2 文档可以在这里找到,完整的 Qt 文档可以在这里找到