如何在 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 中正确显示图片? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python、PyQt5 和 Pyinstaller 修复未正确显示的按钮

PyQt5 不会在标签中显示图片

pyqt5点击按钮从本地加载图片并显示在界面上

上下文菜单未使用 PyQt5 显示正确的语言

PyQt5-关闭窗体显示提示框(窗口界面显示器上居中)-5

PyQt5 PyQt5安装及配置,从文件夹读取图片并显示,模拟生成素描图像