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中使用ConfigParser解析ini配置文件实例
Aug 30 Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
python 调用钉钉机器人的方法
Feb 20 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
Python如何读写字节数据
Aug 05 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 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的一个登录的类 [推荐]
2007/03/16 PHP
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Vue中通过Vue.extend动态创建实例的方法
2019/08/13 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
python使用pil库实现图片合成实例代码
2018/01/20 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
python导入模块交叉引用的方法
2019/01/19 Python
Python检测数据类型的方法总结
2019/05/20 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
详解python logging日志传输
2020/07/01 Python
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
法律专业自我鉴定
2013/10/03 职场文书
销售工作岗位职责
2013/12/24 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
服装店营销方案
2014/03/10 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
全新239军机修复记
2022/04/05 无线电