【问题标题】:PySide/PyQt Text in QTextBrowser disappears after clicking on a link in it单击其中的链接后,QTextBrowser 中的 PySide/PyQt 文本消失
【发布时间】: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('!!!')

【问题讨论】:

  • 请更新您的问题以显示导致问题的实际代码。
  • 我添加了另一部分。

标签: python-3.x pyqt href pyside qtextbrowser


【解决方案1】:

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

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

self.textBrowser.setOpenLinks(False)

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这与本题的具体问题有什么关系?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2019-06-01
      • 1970-01-01
      相关资源
      最近更新 更多