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 27 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
关于Keras Dense层整理
May 21 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
Python实现双向链表基本操作
May 25 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
详解jQuery中的事件
2016/12/14 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
从零学Python之入门(四)运算
2014/05/27 Python
决策树的python实现方法
2014/11/18 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
使用python绘制二维图形示例
2019/11/22 Python
python可视化text()函数使用详解
2020/02/11 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
Python xlwt模块使用代码实例
2020/06/10 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
降消项目实施方案
2014/03/30 职场文书
初一新生军训方案
2014/05/22 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
用Python爬取某乎手机APP数据
2021/06/15 Python
Python find()、rfind()方法及作用
2022/12/24 Python