单击其中的链接后,QTextBrowser 中的 PySide/PyQt 文本消失

Posted

技术标签:

【中文标题】单击其中的链接后,QTextBrowser 中的 PySide/PyQt 文本消失【英文标题】:PySide/PyQt Text in QTextBrowser disappears after clicking on a link in it 【发布时间】:2013-10-18 17:09:52 【问题描述】:

我将以下变量附加到“QTextBrowser”。它确实显示为链接,但是当我单击它时,“QTextBrowser”中的所有文本都消失了。 'anchorClicked' 信号连接到的所有功能都是在 shell 中打印一些东西,以便我知道信号已被接收。

word = '<a href>' + '<span style="background-color:#C0C0C0">' + word + '</span>' +'</a>'

self.textBrowser.anchorClicked.connect(self.test)

def test(self,argv_1):
    print('!!!')

【问题讨论】:

请更新您的问题以显示导致问题的实际代码。 我添加了另一部分。 【参考方案1】:

可能发生的情况是文本浏览器正在尝试导航到锚点中指定的 href。但是由于href是空的,它只是显示一个空白页。

如果你想停止自动链接导航,试试这个:

self.textBrowser.setOpenLinks(False)

(注意:点击链接时仍会发送 anchorClicked 信号)。

【讨论】:

【参考方案2】:

您还可以通过在连接到anchorClicked 信号(在您的情况下为test())的函数中调用self.textBrowser.setSource(QtCore.QUrl()) 来防止这种行为。

举个例子,看看我在回答你的其他问题时做了什么:https://***.com/a/19475367/1994235

这允许您仍然有一些链接可以将您带到其他页面,而另一些则没有(您调用上面的代码行以防止页面更改,仅当某些 url 传递给您的函数时)

【讨论】:

【参考方案3】:

使用html2text 将URL 下载到页面上每个链接的匹配目录。重新格式化为 HTML,添加标题并重新连接链接。然后在每次单击链接时递归执行此操作,这样您就可以有效地拥有一个正常工作的网络浏览器。这些链接实际上会起作用。如果可以的话,我希望看到有人在不到 3 页的时间内完成。

【讨论】:

这与本题的具体问题有什么关系?

以上是关于单击其中的链接后,QTextBrowser 中的 PySide/PyQt 文本消失的主要内容,如果未能解决你的问题,请参考以下文章

如何在 qtextbrowser 中添加超链接和用户可点击操作

PyQt4 中的 QTextBrowser 超链接

如何删除 QTextBrowser 中的虚线轮廓链接?

在 QTextBrowser 中以不同方式处理不同的链接

PyQt如何添加到QTextBrowser的链接

左键单击时QT QTextBrowser禁用写入位置