单击其中的链接后,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 文本消失的主要内容,如果未能解决你的问题,请参考以下文章