PyQt4中的QTextBrowser超链接

时间:2013-07-14 20:07:27

标签: html hyperlink pyqt qtextbrowser

我有一个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', ' ', '']

并用html格式的超链接替换“www”

<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部分重建为字符串,用

替换linebreak \ n
<br/>.

现在,当我将字符串设置为QTextBrowser时,链接会正确显示并且也可以单击。问题是:输入的文本,因为它现在是html,忽略/删除所有空格(如果不止一个)和标签! 输出看起来像(链接现在是蓝色和下划线)

Column1 Column2
1 2 3 4 www.google.com 

如何在不破坏格式的情况下制作超链接?

也许我在错误的火车上?

1 个答案:

答案 0 :(得分:0)

我想我明白了。如果它可能有用,这是我的解决方案: 如果你将css中的样式设置为“pre”,而不是像QTextBrowser那样“预先包装”,那么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>