You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyQt的Label组件中同时显示图片与文本?

在PyQt5的QLabel中同时显示图片与文本

没问题,我帮你调整代码,实现自定义QLabel同时展示图片和文本的功能。你现在的代码只实现了文本绘制,缺少图片加载和绘制的逻辑,而且Window类的代码也没写完,我来补全并优化:

完整实现代码

import sys
from PyQt5.QtCore import QPoint, Qt
from PyQt5.QtGui import QPainter, QColor, QPixmap
from PyQt5.QtWidgets import QLabel, QWidget, QHBoxLayout, QApplication

class MyLabel(QLabel):
    def __init__(self, img_path=None, text="hello,world"):
        super(MyLabel, self).__init__()
        self.text = text
        self.pixmap = QPixmap(img_path) if img_path else None
        # 设置Label的最小尺寸,避免图片被裁剪
        if self.pixmap:
            self.setMinimumSize(self.pixmap.size())

    def paintEvent(self, event):
        # 先调用父类的paintEvent,确保默认样式生效(可选)
        super().paintEvent(event)
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)  # 开启抗锯齿,让显示更平滑

        # 绘制图片
        if self.pixmap:
            # 这里设置图片居中显示,你可以调整x、y坐标改变位置
            x = (self.width() - self.pixmap.width()) // 2
            y = (self.height() - self.pixmap.height()) // 2
            painter.drawPixmap(x, y, self.pixmap)

        # 绘制文本,设置白色字体,位置在图片底部居中
        painter.setPen(QColor(255, 255, 255))
        text_width = painter.fontMetrics().width(self.text)
        text_pos = QPoint(
            (self.width() - text_width) // 2,
            self.height() - 20  # 距离底部20px,可按需调整
        )
        painter.drawText(text_pos, self.text)

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle("Label 图片+文本示例")
        self.resize(400, 300)

        layout = QHBoxLayout(self)
        # 创建自定义Label,传入你的图片路径和要显示的文本
        my_label = MyLabel(img_path="your_image.png", text="这是图片的说明文本")
        layout.addWidget(my_label)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

关键细节说明

  • 图片处理:在MyLabel初始化时传入图片路径,用QPixmap加载资源;绘制时通过计算坐标让图片居中,你也可以直接写固定坐标(比如x=20, y=20)来指定图片位置。
  • 文本布局:文本位置设置在图片底部居中,避免和图片重叠;如果想把文本放在图片上方,只需要把text_pos的y值改成20这类较小的数值即可。
  • 尺寸适配:设置Label最小尺寸为图片大小,防止窗口缩小时图片被强制裁剪。

使用提示

记得把代码里的"your_image.png"替换成你实际的图片路径,支持png、jpg等常见图片格式。

内容的提问来源于stack exchange,提问作者Qiang Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:24:56