使用 QWebView() 查看内联 HTML 文本

dra*_*ire 3 python pyqt pyqt4 qwebview

我正在使用 PyQt4 创建一个应用程序,以便能够在不从系统加载本地 HTML 文件的情况下查看内嵌文本 HTML 标记。但是,我在 HTML 的字符串格式方面遇到了一些问题。这段代码只显示了窗口,而不是 HTML 文本。请帮忙。

# 导入所有模块

类 HtmlView(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        ………………
        # 我在这里跳过了布局定义
        …………………………………………………………………………………………………………………………………………

        # 带有 html 标记的内联文本

        text = "<p>这是一个段落</p><div>这是在div元素内</div>" 

        self.html = QtWebKit.QWebView()

        # 设置布局
        self.gridLayout.addWidget(self.html)
        self.mainLayout.addWidget(self.frame)
        self.setCentralWidget(self.centralwidget)

        self.web_page = 文本
        url = self.web_page
        self.html.load(QtCore.QUrl(url))
        self.html.show()

# 使用 if __name__ == "main" 执行:跳过这部分

请告诉我如何更改 QWebView() 中元素 <p> 和 <div> 的样式。

ekh*_*oro 5

您需要使用setHtml在 webview 中加载标记:

    self.html = QtWebKit.QWebView()
    # self.web_page = text
    # url = self.web_page
    self.html.setHtml(text)
    # self.html.show()
Run Code Online (Sandbox Code Playgroud)

(不需要注释行)。

要为元素设置样式,请将样式表添加到您的标记中:

    text = """
        <html>
        <style type="text/css">
            p {color: red}
            div {color: blue}
        </style>
        <body>   
        <p>This is  a paragraph</p>
        <div>This is inside div element</div>
        </body>   
        </html>
    """
Run Code Online (Sandbox Code Playgroud)

PS:使用 QWebView 显示标记是一个非常重量级的解决方案 - 使用QTextBrowser可能会更好(它更容易使用)。这仅支持有限的 HTML 子集,但通常已经足够了:

    self.html = QtGui.QTextBrowser(self)
    self.html.setHtml(text)
Run Code Online (Sandbox Code Playgroud)