pyqt5的QWebEngineView 使用模板的方法


Posted in Python onAugust 18, 2018

说明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_())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的一些陷阱与技巧小结
Jul 10 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
python3大文件解压和基本操作
Dec 15 Python
Python实现线程状态监测简单示例
Mar 28 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
Django Form常用功能及代码示例
Oct 13 Python
Django缓存Cache使用详解
Nov 30 Python
python递归全排列实现方法
Aug 18 #Python
python使用PIL给图片添加文字生成海报示例
Aug 17 #Python
Python在for循环中更改list值的方法【推荐】
Aug 17 #Python
Python简单读写Xls格式文档的方法示例
Aug 17 #Python
Python实现的连接mssql数据库操作示例
Aug 17 #Python
Python SQL查询并生成json文件操作示例
Aug 17 #Python
python3 flask实现文件上传功能
Mar 20 #Python
You might like
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
2020/11/04 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
聊聊python中的循环遍历
2020/09/07 Python
Python pip 常用命令汇总
2020/10/19 Python
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
程序员机试试题汇总
2012/03/07 面试题
后勤自我鉴定
2013/10/13 职场文书
小学数学教研活动总结
2014/07/01 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
事业单位年度考核评语
2014/12/31 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书