本文整理汇总了Python中QWebEngineView加载网页的4种方式的典型用法代码示例。如果您正苦于以下问题:Python QWebEngineView.setHtml方法的具体用法?可以参考本文看一下。
概述
在Python中,我们通常使用PyQt5或PySide2库来使用Qt的QWebEngineView。QWebEngineView是一个小部件,可以用来显示网页。
QWebEngineView.load方法用于加载并显示一个URL指定的页面。它需要一个QUrl对象作为参数。
QWebEngineView.setHtml方法用于设置当前页面的HTML内容。它需要一个字符串作为参数,该字符串包含要显示的HTML内容。
下文示例中演示了4种使用示例,仅供参考
self.qwebengine.load(url)
self.qwebengine.load(本地文件)
self.qwebengine.setHtml(本地文件)
self.qwebengine.setHtml(URL)
示例代码
示例代码1,displayWeb4InvalidImage
# 显示web界面,为了测试显示的效果,这里提供了四种方式,挨个试试吧。
def displayWeb4InvalidImage(self):
pattern = x_base.get_op_ehart_js('')
replacement = r"eCharts/echarts.min.js"
displayMode = x_base.get_op_display_mode('')
if displayMode == '1': # self.qwebengine.load(url)
page = XWebEnginePage(self.frame)
self.qwebengine.setPage(page)
self.qwebengine.load(QtCore.QUrl(x_base.get_op_web_url("")))
elif displayMode == '2': # self.qwebengine.load(本地文件)
page = XWebEnginePage(self.frame)
self.qwebengine.setPage(page)
dir = Path(__file__).parent.parent
# # 下面的代码是每次更新本地文件的代码
res = self.xutireco.x_utireco_gethtml()
if res != None:
# res = re.sub(pattern, replacement, res)
res = res.replace(pattern, replacement)
# 方法2:setHtml
try:
f = open(Path(dir, 'web.html'), 'w', encoding='utf-8')
f.write(res)
f.close()
except IOError as e:
pass
dir = str(Path(dir, 'web.html'))
dir = dir.replace('\\', '/')
dir = r'file:///' + dir
self.qwebengine.load(QtCore.QUrl(dir))
elif displayMode == '3': # self.qwebengine.setHtml(本地文件)
page = XWebEnginePage(self.frame)
self.qwebengine.setPage(page)
dir = Path(__file__).parent.parent
res = self.xutireco.x_utireco_gethtml()
if res != None:
# res = re.sub(pattern, replacement, res)
res = res.replace(pattern, replacement)
# 方法2:setHtml
try:
f = open(Path(dir, 'web.html'), 'w', encoding='utf-8')
f.write(res)
f.close()
except IOError as e:
pass
f = open(Path(dir, 'web.html'), "r", encoding='utf-8')
self.qwebengine.setHtml(f.read())
else:
f = open(Path(dir, 'web.html'), "r", encoding='utf-8')
page = XWebEnginePage(self.frame)
self.qwebengine.setPage(page)
self.qwebengine.setHtml(f.read())
elif displayMode == '4': # self.qwebengine.setHtml(URL)
page = XWebEnginePage(self.frame)
self.qwebengine.setPage(page)
res = self.xutireco.x_utireco_gethtml()
if res != None:
res = res.replace(pattern, replacement)
# 方法2:setHtml
self.qwebengine.setHtml(res)
示例代码2,XWebEnginePage
###############################################################################
# © © © © © © © © © © © © © © © © © © © © ©
# © © © © © © © © © © © © ©
# © © © © © © © © © © © © © © © © © © © ©
# © © © © © © © © © © © © ©
# © © © © © © © © © © © © © © © © © © © © ©
###############################################################################
from PyQt5.QtWebEngineWidgets import QWebEnginePage
#
class XWebEnginePage(QWebEnginePage):
# def __init__(self, *__args):
# QWebEnginePage.__init__(self, *__args)
# pass
def certificateError(self, error):
error.ignoreCertificateError()
return True
结论
当时在实际的项目应用时,因为使用场景是需要根据业务情况,及时刷新这个web的数据。使用了上述四种方式尝试,在测试系统都没有问题。但是在生产系统使用时,经常是白屏状态。原因未知。后来,就没有加载web,而是直接在python里直接画了一份图表来展示。