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批量提交沙箱问题实例
Oct 08 Python
探寻python多线程ctrl+c退出问题解决方案
Oct 23 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
Python命令行解析模块详解
Feb 01 Python
python实现list由于numpy array的转换
Apr 04 Python
Python中collections模块的基本使用教程
Dec 07 Python
python中时间模块的基本使用教程
May 14 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
使用python实现ftp的文件读写方法
Jul 02 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
如何使用python写截屏小工具
Sep 29 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实现与ASP Banner组件相似的类
2006/10/09 PHP
收集的PHP中与数组相关的函数
2007/03/22 PHP
php递归列出所有文件和目录的代码
2008/09/10 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python程序控制NAO机器人行走
2019/04/29 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
《掌声》教学反思
2014/02/23 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
铣工实训报告
2014/11/05 职场文书
会计岗位职责
2015/02/03 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书