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> 的样式。
您需要使用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)