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 相关文章推荐
windows系统中python使用rar命令压缩多个文件夹示例
May 06 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
python二分查找算法的递归实现方法
May 12 Python
python用装饰器自动注册Tornado路由详解
Feb 14 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
对Python函数设计规范详解
Jul 19 Python
python中使用while循环的实例
Aug 05 Python
如何在django中添加日志功能
Feb 06 Python
Python函数参数定义及传递方式解析
Jun 10 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 Python
详解Python中__new__方法的作用
Mar 31 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
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
javascript实现计算器功能
2020/03/30 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
简单谈谈python的反射机制
2016/06/28 Python
django之常用命令详解
2016/06/30 Python
Python列表解析配合if else的方法
2018/06/23 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python3实现高效的端口扫描
2019/08/31 Python
给我一面国旗 python帮你实现
2019/09/30 Python
python基于event实现线程间通信控制
2020/01/13 Python
Python魔术方法专题
2020/06/19 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
自考生毕业自我鉴定
2013/10/10 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
2015年少先队活动总结
2015/03/25 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
六一儿童节新闻稿
2015/07/17 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书