PyQt5 不正确的标签格式与链接

问题描述

我对 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>

它是这样显示的,没有换行

enter image description here

问题 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 不再检测到超链接

enter image description here

解决方法

来自 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 的文档中所述。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...