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

如何将Python变量嵌入HTML以设置PyQt5 QLabel文本?

在PyQt5的QLabel中用HTML结合Python变量格式化文本

你现在的代码里已经定义了变量lbl_text,但直接在HTML字符串里写{lbl_text}是不会被Python解析替换的——得用Python的字符串格式化方法把变量值插入到HTML模板里才行。下面给你几种简单可行的实现方式,都是PyQt里常用的:

方法1:用f-string(推荐,Python3.6+)

这是最直观简洁的写法,只需要在字符串前面加f,然后直接在大括号里写变量名就行:

self.lbl_others.setText(f'<font color="red"><u>{lbl_text}</u></font><font color="black">ile</font>, <font color="red"><u>A</u></font>ccounts, <font color="red"><u>I</u></font>nventory, <font color="red"><u>M</u></font>anufacture, <font color="red"><u>P</u></font>ayRoll, <font color="red"><u>O</u></font>thers')

运行后,{lbl_text}会被变量里的"F"直接替换,完美实现你要的格式效果。

方法2:用str.format()方法

如果你的Python版本低于3.6,或者需要更灵活的占位符命名,可以用这种方式:

# 匿名占位符写法
self.lbl_others.setText('<font color="red"><u>{}</u></font><font color="black">ile</font>, <font color="red"><u>A</u></font>ccounts...'.format(lbl_text))

# 命名占位符写法(更清晰,适合多变量场景)
self.lbl_others.setText('<font color="red"><u>{first_char}</u></font><font color="black">ile</font>, ...'.format(first_char=lbl_text))

方法3:旧式%格式化(兼容性拉满)

这种写法是Python早期的格式化方式,虽然现在不推荐,但对所有Python版本都兼容:

self.lbl_others.setText('<font color="red"><u>%s</u></font><font color="black">ile</font>, ...' % lbl_text)

这里的%s是字符串占位符,会被后面的lbl_text变量值替换。

完整可运行代码示例

为了让代码更易读,我把长HTML字符串拆成了多行,用反斜杠连接:

import sys
from PyQt5.QtWidgets import (QMainWindow, QWidget, QVBoxLayout, QApplication, QLabel)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.centralwidget = QWidget()
        self.setCentralWidget(self.centralwidget)
        self.lay = QVBoxLayout(self.centralwidget)
        self.lbl_others = QLabel()
        lbl_text = "F" # 自定义变量
        # 拼接格式化后的HTML文本
        formatted_text = f'<font color="red"><u>{lbl_text}</u></font><font color="black">ile</font>, ' \
                        f'<font color="red"><u>A</u></font>ccounts, ' \
                        f'<font color="red"><u>I</u></font>nventory, ' \
                        f'<font color="red"><u>M</u></font>anufacture, ' \
                        f'<font color="red"><u>P</u></font>ayRoll, ' \
                        f'<font color="red"><u>O</u></font>thers'
        self.lbl_others.setText(formatted_text)
        self.lay.addWidget(self.lbl_others)

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

运行这段代码,你的QLabel就会显示出你想要的样式:每个单词的首字母红色带下划线,其余字符黑色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:47:38