如何在 PySide2 中使用 QLabel 加载图像
How to load an image with QLabel in PySide2
我是编码初学者 python。我读到 tkinter 有点 "basic" 如果你想开发一个有点复杂的应用程序并且 PyQt 在许可方面有问题。这就是为什么我选择 PySide2 来开发 this kind of project,但目前为止发现文档比较少的原因。这是正确的选择吗?
我目前的编码问题如下:我正在尝试使用 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_()
我收到以下消息:
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())
您的代码应如下所示:
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. See 。它是使用 PyQt5 编写的,但您可以轻松地将其转换为 PySide2 - 只需在文件顶部的导入中将 PyQt5
替换为 PySide2
,并将 pyqtSignal
替换为 Signal
在第 4 行。该示例还需要当前目录中名为 "image.jpg" 的图像文件(或者您可以在 loadImage
方法中编辑默认路径)。
如果您对 PySide/PyQt 没有太多经验,我建议您完成 this tutorial. It is written for PyQt5, but the code will be 99% identical for PySide2. As suggested above, you will usually only need to change the imports and remove a few pyqt
prefixes for APIs such as pyqtSignal
and pyqtSlot
. The full PySide2 documentation can be found here, and the full Qt documentation is here。
我是编码初学者 python。我读到 tkinter 有点 "basic" 如果你想开发一个有点复杂的应用程序并且 PyQt 在许可方面有问题。这就是为什么我选择 PySide2 来开发 this kind of project,但目前为止发现文档比较少的原因。这是正确的选择吗?
我目前的编码问题如下:我正在尝试使用 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_()
我收到以下消息:
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())
您的代码应如下所示:
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. See PyQt5
替换为 PySide2
,并将 pyqtSignal
替换为 Signal
在第 4 行。该示例还需要当前目录中名为 "image.jpg" 的图像文件(或者您可以在 loadImage
方法中编辑默认路径)。
如果您对 PySide/PyQt 没有太多经验,我建议您完成 this tutorial. It is written for PyQt5, but the code will be 99% identical for PySide2. As suggested above, you will usually only need to change the imports and remove a few pyqt
prefixes for APIs such as pyqtSignal
and pyqtSlot
. The full PySide2 documentation can be found here, and the full Qt documentation is here。