如何将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
相关产品推荐
相关产品推荐

