pyqt5 QWebEngineView 重写mousepressevent捕获鼠标点击事件,无响应

QWebEngineView 加载网页后,重写mousepressevent捕获鼠标点击事件,无响应原因是

QWebEngineView在加载界面后,被本身的child接收了该事件,

解决办法:同过重载event,截取QEvent::ChildAdded事件

from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QTimer, QEventLoop, QObject, pyqtSignal, QEventclass QWebEngineView_New(QWebEngineView):js_result = pyqtSignal(str)def __init__(self, parent=None):super(QWebEngineView_New, self).__init__(parent)self.load(QtCore.QUrl())self.focusProxy().installEventFilter(self)self.setMouseTracking(True) #追踪鼠标self._glwidget = Nonedef eventFilter(self, source, event):#  QWebEngineView 覆盖了 event() 方法,所以它没有调用 QWidget 事件处理程序if event.type() == QEvent.MouseButtonPress:print(f'eventtype:{event.type()} ChildAdded: {QEvent.ChildAdded} MouseButtonPress:{QEvent.MouseButtonPress}')print(source is self._glwidget)if event.type() == QEvent.ChildAdded and event.child().isWidgetType():self._glwidget = event.child()self._glwidget.installEventFilter(self)elif (event.type() == QEvent.MouseButtonPress):#print(Qt.LeftButton)#print(QEvent.MouseButtonPress)#print('event_type:', event.type())print('web-view mouse-press:', event.pos())pos = event.pos()self._run_javascript(pos.x(), pos.y())return super(QWebEngineView_New, self).eventFilter(source, event)def _run_javascript(self, x, y):# 在这里写入你的 JavaScript 代码# js_code = "alert('Hello from JavaScript!');"js_code = '''function myFunction(){return document.elementFromPoint(%s, %s).textContent;}myFunction();'''js_code = js_code % (x, y)# self.fatherWindow.tabWidget.currentWidget().page().runJavaScript(js_code, self.js_callback)self.page().runJavaScript(js_code, self.js_callback)def js_callback(self, result):# 获取点击部位的内容if not result:returnjsresult = result.replace('\n', '')print('jsresult :', jsresult )self.js_result.emit(jsresult ) # 将内容传给信号槽if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)view = QWebEngineView_New()view.load(QtCore.QUrl("https://www.baidu.com"))view.show()sys.exit(app.exec_())

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

islide2024免费版PPT插件下载

一、功能概览 iSlide PPT插件是一款专为PowerPoint用户设计的辅助工具,其功能全面且实用,主要包括但不限于以下几点: 设计元素库:提供丰富的设计元素,如主题、布局、图标、配色等,用户可以直接拖拽使用&a…

动态规划|【双指针】|611.有效三角形个数

题目 611. 有效三角形的个数 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示例 2: 输入: nums [4,2,3,4] 输出…

【Python】OpenCV-使用ResNet50进行图像分类

使用ResNet50进行图像分类 如何使用ResNet50模型对图像进行分类。 import os import cv2 import numpy as np from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image# 设置…

03-03学习笔记 内存管理初始化

当指针位数为32位时,virtual space 的大小就是 2^32,只有当指针位数是64位时,virtual space 才会增大。 通常virtual space 的划分方式为 3:1, 依靠 PAGE_OFFSET 常数控制,影响着内核空间和用户空间的上下文切换效率。 像路由器这…

【Python】进阶学习:pandas--read_excel()函数的基本使用

【Python】进阶学习:pandas–read_excel()函数的基本使用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希…

【好书推荐-第七期】《RTC程序设计:实时音视频权威指南》(音视频开发必看!)

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:洲与AI。 🎈 本文专栏:本文收录…

AWTK-MVVM 配置文件模型

配置文件模型 AWTK-MVVM 内置了一些配置文件模型,用于读写各种配置文件,比如,JSON/XML/INI/CSV/UBJSON 等。 文件名中可以引用下面的变量。 ${app_dir} 应用程序目录${user_dir} 用户目录${temp_dir} 临时目录 json(url${app_dir}/demos/de…

nodejs,JSDOM 补 window环境

window[atob] 是一个在浏览器中使用的 JavaScript 函数,用于将 base64 编码的字符串解码为原始数据。具体来说,atob 函数会将 base64 字符串解码为一个 DOMString,其中包含解码后的二进制数据。这在处理从服务器获取的 base64 编码的数据或在…

多平台拼音输入法软件的开发

拼音输入法从上个世纪发展到现在, 已经发展了几十年了, 技术上已经非常成熟了. 换句话说, 就是实际上没多少技术含量, 随便来个人就能手搓一个. 本文介绍一个简单的多平台拼音输入法软件的设计和实现, 支持 GNU/Linux (ibus) 平台 (PC) 和 Android 平台 (手机). 目录 1 中文输…

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

比如,安装ros的时候,用 执行: sudo apt install ros-melodic-desktop-full 出现如下问题: 如果你根据提示,安装ros-melodic-desktop,他有会说类似“E: 无法修正错误,因为您要求某些软件包保持…

Vue.js入门指南:简介、环境配置与Yarn创建项目

一、Vue.js简介 Vue.js,一个流行的JavaScript框架,以其直观、灵活和高效的特点,在前端开发者中赢得了广泛的赞誉。Vue.js的核心库专注于视图层,使得开发者能够构建出响应式的数据绑定和组合的视图组件。Vue.js的目标是通过尽可能简…

BUUCTF---[极客大挑战 2019]Http1

1.题目描述,在地址框输入下面的网址 2.来到页面,ctrlu查看源码,仔细观察会看到一个.php的跳转页面 3.点进去页面提示It doesnt come from https://Sycsecret.buuoj.cn 4.页面提示它不是来源于这个网址,我们需要用bp抓包对数据进行…

多波束水深数据粗差剔除方法总结(不断更新)

目录 一、粗差产生原因 二、粗差剔除方法 三、自动滤波方法分类 3.1 趋势面滤波 3.1.1 现有方法 3.1.2 缺点

Web开发介绍,制作小网站流程和需要的技术【详解】

1.什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如网站:淘宝,京东等等 2. 网站的工作流程 1.首先我们需…

sparse transformer 常见稀疏注意力

参考: https://zhuanlan.zhihu.com/p/259591644 主要就是降低transformer自注意力模块的复杂度 复杂度主要就是 Q K^T影响的,稀疏注意力就是在Q点乘K的转置这模块做文章 下列式一些sparse transformer稀疏注意力方法 a、transformer原始的 &#xff0…

b站小土堆pytorch学习记录—— P17 土堆说卷积操作

文章目录 一、前置知识什么是卷积操作 二、代码 一、前置知识 什么是卷积操作 推荐几个高赞博客: 卷积最容易理解的解释 卷积神经网络(CNN)详细介绍及其原理详解 还有pytorch官网的动态图: pytorch卷积 二、代码 import t…

MyBatis源码分析之基础支持层反射

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ 👀👀👀 个人博客:小奥的博客 👍👍👍:个人CSDN ⭐️⭐️⭐️:传送门 🍹 本人24应届生一枚,技术和水平有限&am…

PowerShell禁止运行脚本解决方案

错误代码 CategoryInfo : SecurityError: (:) [],ParentContainsErrorRecordException FullyQualifiedErrorId : UnauthorizedAccess在计算机上启动 Windows PowerShell 时,执行策略很可能是 Restricted(默认设置)。 Restricted …

图像分类应用

先留一段图像分类代码,空闲时间再做分析: 创建神经网络: import torch from torch import nn import torch.nn.functional as F class MyAlexNet(nn.Module):def __init__(self):super(MyAlexNet, self).__init__()self.c1nn.Conv2d(in_cha…

二刷代码随想录算法训练营第十天 | 232.用栈实现队列、 225. 用队列实现栈

目录 一、232. 用栈实现队列 二、225. 用队列实现栈 一、232. 用栈实现队列 题目链接:力扣 文章讲解:代码随想录 视频讲解: 栈的基本操作! | LeetCode:232.用栈实现队列 题目: 请你仅使用两个栈实现先…