pyqt5的QWebEngineView 使用模板1

简介: 说明1:关于QWebEngineViewpyqt5 已经抛弃 QtWebKit和QtWebKitWidgets,而使用最新的QtWebEngineWidgets。

说明1:关于QWebEngineView

pyqt5 已经抛弃 QtWebKit和QtWebKitWidgets,而使用最新的QtWebEngineWidgets。
QtWebEngineWidgets,是基于chrome浏览器内核引擎的。

说明2:关于左键点击页面跳转

其中,最让纠结的就是实现左键点击页面跳转了。
在chrome浏览器上,有些页面,左键点击,会直接创建一个新的tab来呈现网页。
在使用QWebEngineView时,如果不做特殊处理,这样的左键点击,是根本没有反应的。
那怎么办?就需要重写QWebEngineView的createWindow方法。

说明3:关于createWindow方法重写

在重写QWebEngineView的createWindow方法时,又有两种写法。
第一种,是直接在本窗口新建tab的方式。 (不推荐使用这种方式)
注:这种方式有个问题,因为新建的tab覆盖了原来的tab,所以,原来tab的所有信息都找不到了,如浏览,账号,密码等。

class WebEngineView(QWebEngineView):
    # 重写createwindow()
    def createWindow(self, QWebEnginePage_WebWindowType):
        return self

第二种,就是新建窗口的方式了。代码如下。(推荐使用这种方式)

【如下代码,完全复制,直接运行,即可使用】

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView


################################################
#######创建主窗口
################################################
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setWindowTitle('My Browser')
        self.showMaximized()

        self.webview = WebEngineView()
        self.webview.load(QUrl("https://www.baidu.com"))
        self.setCentralWidget(self.webview)




################################################
#######创建浏览器
################################################
class WebEngineView(QWebEngineView):
    windowList = []

    # 重写createwindow()
    def createWindow(self, QWebEnginePage_WebWindowType):
        new_webview =   WebEngineView()
        new_window = MainWindow()
        new_window.setCentralWidget(new_webview)
        #new_window.show()
        self.windowList.append(new_window)  #注:没有这句会崩溃!!!
        return new_webview


################################################
#######程序入门
################################################
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())


本文如有帮助,敬请留言鼓励。
本文如有错误,敬请留言改进。

目录
相关文章
|
Unix Shell Linux
赞!优雅的Python多环境管理神器!易上手易操作!
赞!优雅的Python多环境管理神器!易上手易操作!
507 0
|
10月前
|
Dart 前端开发 IDE
鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
本文介绍了如何将现有 Flutter 项目适配鸿蒙系统,详细步骤包括安装 FVM、使用 FVM 安装 Flutter SDK、搭建开发环境、创建项目架构和壳工程等。
856 7
鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
|
11月前
|
存储 小程序 API
深入调查研究Memos
【11月更文挑战第1天】
239 7
|
缓存 前端开发 JavaScript
探索 Qt WebEngineWidgets:从底层原理到高级应用与技巧
探索 Qt WebEngineWidgets:从底层原理到高级应用与技巧
2070 0
|
前端开发 Java 关系型数据库
基于SpringBoot的新闻发布与管理系统的设计与实现_kaic
基于SpringBoot的新闻发布与管理系统的设计与实现_kaic
|
API Python
Python库`openpyxl`是一个用于读取和写入Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
【6月更文挑战第19天】`openpyxl`是Python处理xlsx文件的库,支持读写Excel 2010格式。使用`pip install openpyxl`安装。基本操作包括加载文件、读写单元格、操作行和列。例如,加载Excel后,可以读取单元格`A1`的值,或将“Hello, World!”写入`A1`。还可修改单元格内容,如加1后保存到新文件。更多功能,如样式和公式,见官方文档[1]。 [1]: <https://openpyxl.readthedocs.io/en/stable/>
317 1
|
人工智能 API
开源大模型与大模型api的使用优缺点
【5月更文挑战第26天】开源大模型与大模型api的使用优缺点
1210 1
|
Python
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存
【5月更文挑战第12天】在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存在,该函数对路径进行检查,存在则返回True,不存在则返回False。示例代码展示了如何检查'example.txt'文件是否存在并相应打印消息。此外,`os.path.isfile()`用于确认路径是否为文件,仅当是文件时返回True,否则返回False,同样配以示例说明其用法。
773 2
|
SQL 存储 Oracle
19 PostgreSQL 锁类型,锁模式,锁冲突,死锁检测的介绍|学习笔记
快速学习19 PostgreSQL 锁类型,锁模式,锁冲突,死锁检测的介绍
19 PostgreSQL 锁类型,锁模式,锁冲突,死锁检测的介绍|学习笔记
|
存储 语音技术
基于单片机的银行排队叫号系统的设计
基于单片机的银行排队叫号系统的设计
310 0