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使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
Python中if __name__ == '__main__'作用解析
Jun 29 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
使用tensorflow实现AlexNet
Nov 20 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
django序列化serializers过程解析
Dec 14 Python
Python 项目转化为so文件实例
Dec 23 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
Python数据分析之pandas函数详解
Apr 21 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
js实现单击图片放大图片的方法
2015/02/17 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
会计自我鉴定
2013/11/02 职场文书
文明学生事迹材料
2014/01/29 职场文书
管理失职检讨书
2014/02/12 职场文书
微信营销策划方案
2014/02/24 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers