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计算程序运行时间的方法
Dec 13 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
python 环境变量和import模块导入方法(详解)
Jul 11 Python
python+Splinter实现12306抢票功能
Sep 25 Python
用pycharm开发django项目示例代码
Oct 24 Python
python logging设置level失败的解决方法
Feb 19 Python
MATLAB数学建模之画图汇总
Jul 16 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
python 实现端口扫描工具
Dec 18 Python
python实现图片批量压缩
Apr 24 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中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
动态表格Table类的实现
2009/08/26 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
JS实现轮播图效果
2020/01/11 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
Django REST framework 视图和路由详解
2019/07/19 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
会计专业的自荐信
2013/12/12 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python