【问题标题】:PyQt5 incorrect label formatting with linksPyQt5 带有链接的标签格式不正确
【发布时间】:2021-05-02 19:49:34
【问题描述】:

我对 PyQt 如何格式化我的 QLabels 有两个问题

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

【问题讨论】:

  • 你试过&lt;br&gt;而不是换行吗?
  • 更好地创建最小的工作代码,我们可以简单地复制和运行它 - 并测试想法。
  • 看起来像垃圾进垃圾出的情况。如果您想要可靠的 html 解析,请使用格式正确的 html。

标签: python pyqt pyside pyside2


【解决方案1】:

来自QLabel的text property documentation

文本将被解释为纯文本或富文本,具体取决于文本格式设置;见setTextFormat()。默认设置是 Qt::AutoText;即 QLabel 将尝试自动检测文本集的格式。

AutoText 标志只能使用简单的标记语法检查(不带参数的基本标记,例如 &lt;b&gt;,或文档类型声明标头,例如 &lt;html&gt;)进行 猜测。 这显然是出于性能原因。

如果您确定始终设置富文本内容,请使用适当的 Qt.TextFormat 枚举:

    label.setTextFormat(QtCore.Qt.RichText)

使用富文本的类 HTML 语法显然会使用 HTML 自诞生以来的基本概念,差不多 30 年前:文档中的 any 单词(文本或标签)之间的换行符被忽略,就像多个空格始终被视为一个一样。

因此,如果要添加换行符,则必须使用适当的&lt;br&gt;(或&lt;br/&gt; for xhtml)标签。

还请记住,Qt 富文本引擎具有有限支持,如有关 Supported HTML Subset 的文档中所述。

【讨论】:

    猜你喜欢
    • 2020-04-01
    • 2013-12-26
    • 2013-11-01
    • 2012-10-27
    • 2010-10-15
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多