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

时间:2014-01-07 20:18:08

标签: python pyqt pyqt4 qwebview

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


# imported all the modules

class HtmlView(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        .................
        # i've skipped the layout definition here
        ................

        # an inline text with html mark-up

        text = "<p>This is  a paragraph</p><div>This is inside div   element</div>" 

        self.html = QtWebKit.QWebView()

        # setting layout
        self.gridLayout.addWidget(self.html)
        self.mainLayout.addWidget(self.frame)
        self.setCentralWidget(self.centralwidget)

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

# executing using if __name__ == "main": skipped this part

请告诉我如何更改元素的样式&lt; p&gt;和&lt; div&gt;在QWebView()中。

1 个答案:

答案 0 :(得分:4)

您需要使用setHtml在网页视图中加载标记:

    self.html = QtWebKit.QWebView()
    # self.web_page = text
    # url = self.web_page
    self.html.setHtml(text)
    # self.html.show()

(不需要注释行。)

要设置元素的样式,请在标记中添加样式表:

    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>
    """

PS:使用QWebView显示标记是一个非常重量级的解决方案 - 使用QTextBrowser代替它可能更好(这更容易使用)。这仅支持limited subset of HTML,但通常足够好:

    self.html = QtGui.QTextBrowser(self)
    self.html.setHtml(text)