QTextBrowser 显示带有多余空格的嵌套 HTML 列表
Posted
技术标签:
【中文标题】QTextBrowser 显示带有多余空格的嵌套 HTML 列表【英文标题】:QTextBrowser displaying nested HTML list with extraneous whitespace 【发布时间】:2019-01-29 16:13:34 【问题描述】:在我正在构建的应用程序中,我正在使用 QTextBrowser 显示一些 html。 HTML 包含一些嵌套列表,我发现最后一个父项与其第一个子列表项之间有一些额外的空白。
简化示例:
list.html:
<ul>
<li>Parent List A
<ul>
<li>A1</li>
<li>A2</li>
</ul>
</li>
<li>Parent List B
<ul>
<li>B1</li>
<li>B2</li>
</ul>
</li>
</ul>
list_test.py:
import sys
from PySide2.QtWidgets import QApplication, QTextBrowser
with open('./list.html') as f:
html = f.read()
app = QApplication()
text_widget = QTextBrowser()
text_widget.setHtml(html)
text_widget.show()
sys.exit(app.exec_())
生成一个如下所示的小部件:
同样奇怪的是,它只是父列表的最后一项。所以,如果我添加一个父列表 C:
list.html:
<ul>
<li>Parent List A
<ul>
<li>A1</li>
<li>A2</li>
</ul>
</li>
<li>Parent List B
<ul>
<li>B1</li>
<li>B2</li>
</ul>
</li>
<li>Parent List C
<ul>
<li>C1</li>
<li>C2</li>
</ul>
</li>
</ul>
只有父列表 C 显示了这个额外的空白:
我正在使用 PySide2 版本 5.11.0 的 Windows 10 上对此进行测试
【问题讨论】:
似乎与QTBUG-32084有关。 是的,我应该先检查他们的问题跟踪器。它显然是几年前在 Qt4 中报道的......显然它从未修复:QTBUG-1586 没有必要为 qt4 重新打开问题,因为它不再受支持。您需要为 qt5(不是 pyside2)打开一个新问题。 只是按照关于该问题的最后评论中的建议进行操作,但是是的,我会继续打开一个新的。 【参考方案1】:如果在打开<ul>
之前关闭<li>
标签,则显示不再有问题。
<ul>
<li>Parent List A</li>
<ul>
<li>A1</li>
<li>A2</li>
</ul>
<li>Parent List B</li>
<ul>
<li>B1</li>
<li>B2</li>
</ul>
</ul>
我目前没有使用 HTML,但我一直使用这种方法,而不是打开 <li>
并在里面放置一个 <ul>
,所以如果那是有效的 HTML 的话。
如果您的 HTML 是标准的,我会重新打开 Qt5 的问题。
【讨论】:
是的,这是我正在使用的当前解决方法。 This is not valid HTML though,所以我在他们的追踪器上开了一个新问题:QTBUG-73436 感谢您告诉我!希望该错误将很快得到解决;)以上是关于QTextBrowser 显示带有多余空格的嵌套 HTML 列表的主要内容,如果未能解决你的问题,请参考以下文章
如何让 QTextBrowser 显示 QTextEdit 的内容?
为啥 QTextBrowser 中的文本不是一个一个显示,而是一次显示全部?