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实现的直接插入排序算法示例
Apr 29 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
django中使用POST方法获取POST数据
Aug 20 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
python json.dumps中文乱码问题解决
Apr 01 Python
Python在字符串中处理html和xml的方法
Jul 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
DISCUZ 分页代码
2007/01/02 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php技巧小结【推荐】
2017/01/19 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
vue实现图片上传功能
2020/05/28 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Django 自动生成api接口文档教程
2019/11/19 Python
numpy实现RNN原理实现
2021/03/02 Python
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
华为C++笔试题
2014/08/05 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
酒吧副总经理岗位职责
2013/12/10 职场文书
小学生新年寄语
2014/04/03 职场文书
2014年三万活动总结
2014/04/26 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
银行求职自荐信
2014/06/30 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
转正申请报告格式
2015/05/15 职场文书
《鲸》教学反思
2016/02/23 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android