38.Python中QWebEngineView使用方法示例

本文详细介绍了如何在Python中使用QWebEngineView通过load和setHtml方法加载网页,包括从URL、本地文件和HTML字符串加载示例,以及在实际项目中的应用问题和解决方案。
摘要由CSDN通过智能技术生成

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坐忘3GQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值