首页 文章

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

提问于
浏览
3

我正在使用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

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

1 回答

  • 4

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

    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)
    

相关问题