如何在 PyQt5 中正确显示图片?

问题描述

我正在制作一个播客应用程序,我想在其中显示频道图标。这就是我问自己的地方:如何在 PyQt5 中正确显示图片?我读到了这个:

label = QLabel()
pixmap = Qpixmap('image.png')
label.setpixmap(pixmap)

人们经常这样做,但我对此感到有些不安。尽管有一种额外的方法可以做到这一点,但对我来说感觉很糟糕。是否有任何文档段落将上述方式定义为官方标准?如果没有,有没有更好的方法?类似的东西

lay = QVBoxLayout()
image = SomeWidget("image.png")
lay.addWidget(image)

解决方法

QObject 的所有 Qt 子类(包括 QWidget 的所有子类,因为它继承自 QObject)允许在构造函数中设置它们的 Qt properties 作为关键字参数。

由于 pixmap 是 QLabel 的一个属性,您可以使用以下行的图像集直接创建一个:

image = QLabel(pixmap=QPixmap('image.png'))

如果您对此感到困扰,那么只需创建一个方便的函数或类:

def ImageWidget(path):
    return QLabel(pixmap=QPixmap(path))

# or,alternatively

class ImageWidget(QLabel):
    def __init__(self,path):
        super().__init__(pixmap=QPixmap(path))