我正在使用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()中。
答案 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)