PyQt5 - 如何在 QTextBrowser 中显示可点击的超链接

问题描述

我用 PyQt5 创建了一个 GUI。现在我想向 QTextbrowser 添加链接。不幸的是,文本不可点击,而是显示为普通文本,我很难找出原因。

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QTextbrowser

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.text_browser = QTextbrowser()
        self.text_browser.setopenExternalLinks(True)
        self.text_browser.setReadOnly(True)
        self.text_browser.append("<a href=https://google.com/>Google</a>")
        self.text_browser.append("<a href=https://github.com/>Github</a>")

        layout = QVBoxLayout()
        layout.addWidget(self.text_browser)
        self.setLayout(layout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.exec_()

没有链接的图形界面

解决方法

与标准 Web 浏览器相比,Qt 使用的 HTML 解析器是初级的,因此首选更标准的语法。

虽然这是否是一个错误尚有争议,但在 HTML 属性周围使用引号总是更好。

    self.text_browser.append("<a href='https://google.com/'>Google</a>")
    self.text_browser.append("<a href='https://github.com/'>Github</a>")

注意:QTextBrowser 默认已经是只读的,不需要设置该选项。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...