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实现读取及写入csv文件的方法示例
Jan 12 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
Python matplotlib绘制饼状图功能示例
Sep 10 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
Feb 26 Python
如何提高python 中for循环的效率
Apr 15 Python
Python pip安装模块提示错误解决方案
May 22 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
Python基于unittest实现测试用例执行
Nov 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
菜鸟学PHP之Smarty入门
2007/01/04 PHP
Yii框架form表单用法实例
2014/12/04 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
Yii rules常用规则示例
2016/03/15 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
JS实现放烟花效果
2020/03/10 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
pandas 数据实现行间计算的方法
2018/06/08 Python
Python简单基础小程序的实例代码
2019/04/28 Python
python3获取当前目录的实现方法
2019/07/29 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
平面设计师的工作职责
2013/11/21 职场文书
2015大学生实训报告
2014/11/05 职场文书
工作时间证明
2015/06/15 职场文书
礼仪培训心得体会
2016/01/22 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js