问题描述
我对 PyQt 如何格式化我的 QLabel 有两个问题
问题 1: 添加超链接时,它会显示为字符串中没有换行符。 对于输入文本:
<a href = "https://www.google.co.uk/">https://www.google.co.uk/</a>
<a href = "https://www.google.co.uk/">https://www.google.co.uk/</a>
<a href = "https://www.google.co.uk/">https://www.google.co.uk/</a>
它是这样显示的,没有换行
问题 2: 有时 PyQt 甚至没有检测到 'a' 标签,当字符串的开头不是超链接时会发生这种情况,但随后是带有超链接的换行符,例如这个输入:
test
<a href = "https://www.google.co.uk/">https://www.google.co.uk/</a>
<a href = "https://www.google.co.uk/">https://www.google.co.uk/</a>
<a href = "https://www.google.co.uk/">https://www.google.co.uk/</a>
如您所见,换行符已正确显示,但 PyQt 不再检测到超链接
解决方法
来自 QLabel 的 text property documentation:
文本将被解释为纯文本或富文本,具体取决于文本格式设置;见setTextFormat()。默认设置为 Qt::AutoText;即 QLabel 将尝试自动检测文本集的格式。
AutoText
标志只能使用简单的标记语法检查(没有参数的基本标记,例如 <b>
,或文档类型声明标头,例如 {{ 1}}).
这样做显然是出于性能原因。
如果您确定始终设置富文本内容,请使用相应的 Qt.TextFormat
枚举:
<html>
使用富文本的类似 HTML 的语法显然将使用 HTML 自诞生以来的基本概念,几乎 30 年前:文档中任何单词之间的换行符(文本或标签)被忽略,就像多个空格总是被视为一个一样。
因此,如果您想添加换行符,则必须使用适当的 label.setTextFormat(QtCore.Qt.RichText)
(或 <br>
for xhtml)标签。
另请记住,Qt 富文本引擎的支持有限,如有关 Supported HTML Subset 的文档中所述。