问题描述
我正在制作一个播客应用程序,我想在其中显示频道图标。这就是我问自己的地方:如何在 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))