PyQt4 中的 QTextBrowser 超链接
Posted
技术标签:
【中文标题】PyQt4 中的 QTextBrowser 超链接【英文标题】:QTextBrowser Hyperlinks in PyQt4 【发布时间】:2013-07-14 20:07:27 【问题描述】:我有一个 QTextBrowser,我在其中输入了示例文本:
Column1 Column2
1 2 3 4 www.google.com
列之间有制表符,数字之间有空格。 plainText=QTextBrowser.toPlainText() 给出:
Column1 Column2
1 2 3 4 www.google.com
现在,我想让链接可点击。通过这个,我将文本设置为 html。 我用
写了一些字符串操作WORDS = re.split("(\W+)",plainText)
这给了
['Column1', '\t', 'Column2', '\n', '1', ' ', '2', ' ', '3', ' ', '4', '\t', 'www', '.', 'google', '.', 'com', ' ', '']
并将“www”替换为html格式的超链接
<a href=http://www.google.com>www.google.com</a>
然后,我删除了WORDS中的项目:“.”、“test”、“.”、“com”。
['Column1', '\t', 'Column2', '\n', '1', ' ', '2', ' ', '3', ' ', '4', '\t', '<a href=http://www.google.com>www.google.com</a>', ' ', '']
然后我再次将所有 WORDS 部分重建为一个字符串,将换行符 \n 替换为
<br/>.
现在,当我将字符串设置为 QTextBrowser 时,链接会正确显示并且可以点击。问题是:输入的文本,因为它现在是 html,忽略/删除所有空格(如果多个)和制表符! 输出看起来像(链接现在是蓝色并带有下划线)
Column1 Column2
1 2 3 4 www.google.com
如何在不破坏格式的情况下创建超链接?
也许我坐错了火车??
【问题讨论】:
【参考方案1】:我想我明白了。如果它可能有用,这是我的解决方案: 如果您将 css 中的样式设置为“pre”,而不像 QTextBrowser 那样“pre-wrap”,则 html 文件确实尊重您的格式。 此外,最终键入的链接可以直接替换为创建的超链接。
生成并设置为 QTextBrowser 的 html 文件部分如下所示:
<style type="text/css">#editor white-space: pre; </style>
<p id='editor', style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a name="editor"></a>Column1 Column2</p>
【讨论】:
以上是关于PyQt4 中的 QTextBrowser 超链接的主要内容,如果未能解决你的问题,请参考以下文章
Python PyQt5 QTextBrowser 超链接丢失部分链接
如何在 qtextbrowser 中添加超链接和用户可点击操作