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基础教程之缩进介绍
Aug 29 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
在Python中使用next()方法操作文件的教程
May 24 Python
遗传算法之Python实现代码
Oct 10 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
Python使用gRPC传输协议教程
Oct 16 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 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
星际中的相关伤害
2020/03/04 星际争霸
php增删改查示例自己写的demo
2013/09/04 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
flask入门之表单的实现
2018/07/18 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python numpy数组复制使用实例解析
2020/01/10 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
通过css3的filter滤镜改变png图片的颜色的示例代码
2020/05/06 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
个人找工作的自我评价
2013/10/17 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
写给医院的感谢信
2015/01/22 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
详解CSS3浏览器兼容
2022/12/24 HTML / CSS