关于python:使用QWebView()查看内联HTML文本

Viewing an inline HTML text using QWebView()

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 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>This is inside div   element"


        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()中。


需要使用sethtml在WebView中加载标记:

1
2
3
4
5
    self.html = QtWebKit.QWebView()
    # self.web_page = text
    # url = self.web_page
    self.html.setHtml(text)
    # self.html.show()

(不需要注释行)。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    text ="""
        <html>
        <style type="text/css">
            p {color: red}
            div {color: blue}
        </style>
        <body>  
        <p>
This is  a paragraph
</p>
        This is inside div element
        </body>  
        </html>
   """

PS:使用qwebview显示标记是一个非常重要的解决方案——使用qtexbrowser(更容易使用)可能更好。这只支持有限的HTML子集,但通常足够好:

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