如何在 PyQt5 中正确显示图片? [关闭]
Posted
技术标签:
【中文标题】如何在 PyQt5 中正确显示图片? [关闭]【英文标题】:How to properly display a picture in PyQt5? [closed] 【发布时间】:2021-04-23 21:42:47 【问题描述】:我正在制作一个播客应用程序,我想在其中显示频道图标。那就是我问自己的地方:如何在 PyQt5 中正确显示图片?我读到了这个:
label = QLabel()
pixmap = QPixmap('image.png')
label.setPixmap(pixmap)
经常这样做,但我对此感到有点,嗯,不安。即使有一种额外的方法可以做到这一点,我也觉得这很骇人听闻。是否有任何文档段落将上述方式定义为官方标准?如果没有,有没有更好的方法?类似的东西
lay = QVBoxLayout()
image = SomeWidget("image.png")
lay.addWidget(image)
【问题讨论】:
是什么让你觉得它“hackish”? @musicamante "是什么让你觉得它很老套" - 好吧,我创建了一个标签和一个像素图,只是为了将该像素图添加到标签中——我认为这是一个矫枉过正。如果你有一个小部件给你一个吃的路径,然后你可以将小部件添加到你的布局或其他任何东西中,然后就完成了。 这就是你的观点。虽然它的主要目的是显示一些文本,但 QLabel 实际上是一个复杂的小部件,它支持图像和框架(因为它继承了 QFrame)。显示图像的功能只是其功能之一,但不是它的主要功能,因此您必须添加更多命令才能显示它是有道理的;此外,由于 QLabel 已经具备显示图像的能力,因此为此设置单独的类是没有意义的。 @musicamante 好的,如果您将其添加到您的答案中,我会接受它 【参考方案1】: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))
【讨论】:
以上是关于如何在 PyQt5 中正确显示图片? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章