38.Python中QWebEngineView使用方法示例

本文整理汇总了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里直接画了一份图表来展示。


请使用浏览器的分享功能分享到微信等