From 4393c43289915559069b36045a7345d06f8fb742 Mon Sep 17 00:00:00 2001
From: Irony <892768447@qq.com>
Date: Sat, 27 Apr 2019 16:47:05 +0800
Subject: [PATCH] =?UTF-8?q?#40=20Js=E4=BA=A4=E4=BA=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.settings/org.eclipse.core.resources.prefs | 1 +
QWebEngineView/Data/JsSignals.html | 46 +++
QWebEngineView/Data/qwebchannel.js | 427 +++++++++++++++++++++
QWebEngineView/JsSignals.py | 152 ++++++++
QWebEngineView/README.md | 12 +-
QWebEngineView/ScreenShot/JsSignals.gif | Bin 0 -> 353133 bytes
README.md | 1 +
7 files changed, 638 insertions(+), 1 deletion(-)
create mode 100644 QWebEngineView/Data/JsSignals.html
create mode 100644 QWebEngineView/Data/qwebchannel.js
create mode 100644 QWebEngineView/JsSignals.py
create mode 100644 QWebEngineView/ScreenShot/JsSignals.gif
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index c421fe3..12f131c 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -49,6 +49,7 @@ encoding//QTableWidget/TableWidget.py=utf-8
encoding//QThread/moveToThread.py=utf-8
encoding//QTreeWidget/ParsingJson.py=utf-8
encoding//QWebEngineView/GetCookie.py=utf-8
+encoding//QWebEngineView/JsSignals.py=utf-8
encoding//QWebView/DreamTree.py=utf-8
encoding//QWebView/GetCookie.py=utf-8
encoding//QWidget/Lib/CustomPaintWidget.py=utf-8
diff --git a/QWebEngineView/Data/JsSignals.html b/QWebEngineView/Data/JsSignals.html
new file mode 100644
index 0000000..9fb0bb3
--- /dev/null
+++ b/QWebEngineView/Data/JsSignals.html
@@ -0,0 +1,46 @@
+
+
+
+ 测试
+
+
+
+
+ 1、测试修改窗口属性
+ windowTitle 是Qt窗口本身的属性, 当标题被修改后会触发本身的windowTitleChanged信号
+
+
+
+
+ 2、调用Python中的方法callFromJs
+ callFromJs(str) 函数是由Python代码中定义, 通过@pyqtSlot(str)装饰器暴露出来
+
+
+ 3、发送自定义信号
+ 点击底部的按钮将会发送customSignal信号出来,网页中收到该信号将会在下面日志框输出内容
+
+ 日志
+
+
+
diff --git a/QWebEngineView/Data/qwebchannel.js b/QWebEngineView/Data/qwebchannel.js
new file mode 100644
index 0000000..5b047c2
--- /dev/null
+++ b/QWebEngineView/Data/qwebchannel.js
@@ -0,0 +1,427 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtWebChannel module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+"use strict";
+
+var QWebChannelMessageTypes = {
+ signal: 1,
+ propertyUpdate: 2,
+ init: 3,
+ idle: 4,
+ debug: 5,
+ invokeMethod: 6,
+ connectToSignal: 7,
+ disconnectFromSignal: 8,
+ setProperty: 9,
+ response: 10,
+};
+
+var QWebChannel = function(transport, initCallback)
+{
+ if (typeof transport !== "object" || typeof transport.send !== "function") {
+ console.error("The QWebChannel expects a transport object with a send function and onmessage callback property." +
+ " Given is: transport: " + typeof(transport) + ", transport.send: " + typeof(transport.send));
+ return;
+ }
+
+ var channel = this;
+ this.transport = transport;
+
+ this.send = function(data)
+ {
+ if (typeof(data) !== "string") {
+ data = JSON.stringify(data);
+ }
+ channel.transport.send(data);
+ }
+
+ this.transport.onmessage = function(message)
+ {
+ var data = message.data;
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+ switch (data.type) {
+ case QWebChannelMessageTypes.signal:
+ channel.handleSignal(data);
+ break;
+ case QWebChannelMessageTypes.response:
+ channel.handleResponse(data);
+ break;
+ case QWebChannelMessageTypes.propertyUpdate:
+ channel.handlePropertyUpdate(data);
+ break;
+ default:
+ console.error("invalid message received:", message.data);
+ break;
+ }
+ }
+
+ this.execCallbacks = {};
+ this.execId = 0;
+ this.exec = function(data, callback)
+ {
+ if (!callback) {
+ // if no callback is given, send directly
+ channel.send(data);
+ return;
+ }
+ if (channel.execId === Number.MAX_VALUE) {
+ // wrap
+ channel.execId = Number.MIN_VALUE;
+ }
+ if (data.hasOwnProperty("id")) {
+ console.error("Cannot exec message with property id: " + JSON.stringify(data));
+ return;
+ }
+ data.id = channel.execId++;
+ channel.execCallbacks[data.id] = callback;
+ channel.send(data);
+ };
+
+ this.objects = {};
+
+ this.handleSignal = function(message)
+ {
+ var object = channel.objects[message.object];
+ if (object) {
+ object.signalEmitted(message.signal, message.args);
+ } else {
+ console.warn("Unhandled signal: " + message.object + "::" + message.signal);
+ }
+ }
+
+ this.handleResponse = function(message)
+ {
+ if (!message.hasOwnProperty("id")) {
+ console.error("Invalid response message received: ", JSON.stringify(message));
+ return;
+ }
+ channel.execCallbacks[message.id](message.data);
+ delete channel.execCallbacks[message.id];
+ }
+
+ this.handlePropertyUpdate = function(message)
+ {
+ for (var i in message.data) {
+ var data = message.data[i];
+ var object = channel.objects[data.object];
+ if (object) {
+ object.propertyUpdate(data.signals, data.properties);
+ } else {
+ console.warn("Unhandled property update: " + data.object + "::" + data.signal);
+ }
+ }
+ channel.exec({type: QWebChannelMessageTypes.idle});
+ }
+
+ this.debug = function(message)
+ {
+ channel.send({type: QWebChannelMessageTypes.debug, data: message});
+ };
+
+ channel.exec({type: QWebChannelMessageTypes.init}, function(data) {
+ for (var objectName in data) {
+ var object = new QObject(objectName, data[objectName], channel);
+ }
+ // now unwrap properties, which might reference other registered objects
+ for (var objectName in channel.objects) {
+ channel.objects[objectName].unwrapProperties();
+ }
+ if (initCallback) {
+ initCallback(channel);
+ }
+ channel.exec({type: QWebChannelMessageTypes.idle});
+ });
+};
+
+function QObject(name, data, webChannel)
+{
+ this.__id__ = name;
+ webChannel.objects[name] = this;
+
+ // List of callbacks that get invoked upon signal emission
+ this.__objectSignals__ = {};
+
+ // Cache of all properties, updated when a notify signal is emitted
+ this.__propertyCache__ = {};
+
+ var object = this;
+
+ // ----------------------------------------------------------------------
+
+ this.unwrapQObject = function(response)
+ {
+ if (response instanceof Array) {
+ // support list of objects
+ var ret = new Array(response.length);
+ for (var i = 0; i < response.length; ++i) {
+ ret[i] = object.unwrapQObject(response[i]);
+ }
+ return ret;
+ }
+ if (!response
+ || !response["__QObject*__"]
+ || response.id === undefined) {
+ return response;
+ }
+
+ var objectId = response.id;
+ if (webChannel.objects[objectId])
+ return webChannel.objects[objectId];
+
+ if (!response.data) {
+ console.error("Cannot unwrap unknown QObject " + objectId + " without data.");
+ return;
+ }
+
+ var qObject = new QObject( objectId, response.data, webChannel );
+ qObject.destroyed.connect(function() {
+ if (webChannel.objects[objectId] === qObject) {
+ delete webChannel.objects[objectId];
+ // reset the now deleted QObject to an empty {} object
+ // just assigning {} though would not have the desired effect, but the
+ // below also ensures all external references will see the empty map
+ // NOTE: this detour is necessary to workaround QTBUG-40021
+ var propertyNames = [];
+ for (var propertyName in qObject) {
+ propertyNames.push(propertyName);
+ }
+ for (var idx in propertyNames) {
+ delete qObject[propertyNames[idx]];
+ }
+ }
+ });
+ // here we are already initialized, and thus must directly unwrap the properties
+ qObject.unwrapProperties();
+ return qObject;
+ }
+
+ this.unwrapProperties = function()
+ {
+ for (var propertyIdx in object.__propertyCache__) {
+ object.__propertyCache__[propertyIdx] = object.unwrapQObject(object.__propertyCache__[propertyIdx]);
+ }
+ }
+
+ function addSignal(signalData, isPropertyNotifySignal)
+ {
+ var signalName = signalData[0];
+ var signalIndex = signalData[1];
+ object[signalName] = {
+ connect: function(callback) {
+ if (typeof(callback) !== "function") {
+ console.error("Bad callback given to connect to signal " + signalName);
+ return;
+ }
+
+ object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || [];
+ object.__objectSignals__[signalIndex].push(callback);
+
+ if (!isPropertyNotifySignal && signalName !== "destroyed") {
+ // only required for "pure" signals, handled separately for properties in propertyUpdate
+ // also note that we always get notified about the destroyed signal
+ webChannel.exec({
+ type: QWebChannelMessageTypes.connectToSignal,
+ object: object.__id__,
+ signal: signalIndex
+ });
+ }
+ },
+ disconnect: function(callback) {
+ if (typeof(callback) !== "function") {
+ console.error("Bad callback given to disconnect from signal " + signalName);
+ return;
+ }
+ object.__objectSignals__[signalIndex] = object.__objectSignals__[signalIndex] || [];
+ var idx = object.__objectSignals__[signalIndex].indexOf(callback);
+ if (idx === -1) {
+ console.error("Cannot find connection of signal " + signalName + " to " + callback.name);
+ return;
+ }
+ object.__objectSignals__[signalIndex].splice(idx, 1);
+ if (!isPropertyNotifySignal && object.__objectSignals__[signalIndex].length === 0) {
+ // only required for "pure" signals, handled separately for properties in propertyUpdate
+ webChannel.exec({
+ type: QWebChannelMessageTypes.disconnectFromSignal,
+ object: object.__id__,
+ signal: signalIndex
+ });
+ }
+ }
+ };
+ }
+
+ /**
+ * Invokes all callbacks for the given signalname. Also works for property notify callbacks.
+ */
+ function invokeSignalCallbacks(signalName, signalArgs)
+ {
+ var connections = object.__objectSignals__[signalName];
+ if (connections) {
+ connections.forEach(function(callback) {
+ callback.apply(callback, signalArgs);
+ });
+ }
+ }
+
+ this.propertyUpdate = function(signals, propertyMap)
+ {
+ // update property cache
+ for (var propertyIndex in propertyMap) {
+ var propertyValue = propertyMap[propertyIndex];
+ object.__propertyCache__[propertyIndex] = propertyValue;
+ }
+
+ for (var signalName in signals) {
+ // Invoke all callbacks, as signalEmitted() does not. This ensures the
+ // property cache is updated before the callbacks are invoked.
+ invokeSignalCallbacks(signalName, signals[signalName]);
+ }
+ }
+
+ this.signalEmitted = function(signalName, signalArgs)
+ {
+ invokeSignalCallbacks(signalName, this.unwrapQObject(signalArgs));
+ }
+
+ function addMethod(methodData)
+ {
+ var methodName = methodData[0];
+ var methodIdx = methodData[1];
+ object[methodName] = function() {
+ var args = [];
+ var callback;
+ for (var i = 0; i < arguments.length; ++i) {
+ var argument = arguments[i];
+ if (typeof argument === "function")
+ callback = argument;
+ else if (argument instanceof QObject && webChannel.objects[argument.__id__] !== undefined)
+ args.push({
+ "id": argument.__id__
+ });
+ else
+ args.push(argument);
+ }
+
+ webChannel.exec({
+ "type": QWebChannelMessageTypes.invokeMethod,
+ "object": object.__id__,
+ "method": methodIdx,
+ "args": args
+ }, function(response) {
+ if (response !== undefined) {
+ var result = object.unwrapQObject(response);
+ if (callback) {
+ (callback)(result);
+ }
+ }
+ });
+ };
+ }
+
+ function bindGetterSetter(propertyInfo)
+ {
+ var propertyIndex = propertyInfo[0];
+ var propertyName = propertyInfo[1];
+ var notifySignalData = propertyInfo[2];
+ // initialize property cache with current value
+ // NOTE: if this is an object, it is not directly unwrapped as it might
+ // reference other QObject that we do not know yet
+ object.__propertyCache__[propertyIndex] = propertyInfo[3];
+
+ if (notifySignalData) {
+ if (notifySignalData[0] === 1) {
+ // signal name is optimized away, reconstruct the actual name
+ notifySignalData[0] = propertyName + "Changed";
+ }
+ addSignal(notifySignalData, true);
+ }
+
+ Object.defineProperty(object, propertyName, {
+ configurable: true,
+ get: function () {
+ var propertyValue = object.__propertyCache__[propertyIndex];
+ if (propertyValue === undefined) {
+ // This shouldn't happen
+ console.warn("Undefined value in property cache for property \"" + propertyName + "\" in object " + object.__id__);
+ }
+
+ return propertyValue;
+ },
+ set: function(value) {
+ if (value === undefined) {
+ console.warn("Property setter for " + propertyName + " called with undefined value!");
+ return;
+ }
+ object.__propertyCache__[propertyIndex] = value;
+ var valueToSend = value;
+ if (valueToSend instanceof QObject && webChannel.objects[valueToSend.__id__] !== undefined)
+ valueToSend = { "id": valueToSend.__id__ };
+ webChannel.exec({
+ "type": QWebChannelMessageTypes.setProperty,
+ "object": object.__id__,
+ "property": propertyIndex,
+ "value": valueToSend
+ });
+ }
+ });
+
+ }
+
+ // ----------------------------------------------------------------------
+
+ data.methods.forEach(addMethod);
+
+ data.properties.forEach(bindGetterSetter);
+
+ data.signals.forEach(function(signal) { addSignal(signal, false); });
+
+ for (var name in data.enums) {
+ object[name] = data.enums[name];
+ }
+}
+
+//required for use with nodejs
+if (typeof module === 'object') {
+ module.exports = {
+ QWebChannel: QWebChannel
+ };
+}
diff --git a/QWebEngineView/JsSignals.py b/QWebEngineView/JsSignals.py
new file mode 100644
index 0000000..0f0e48d
--- /dev/null
+++ b/QWebEngineView/JsSignals.py
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+Created on 2019年4月27日
+@author: Irony
+@site: https://pyqt5.com https://github.com/892768447
+@email: 892768447@qq.com
+@file: QWebEngineView.JsSignals
+@description:
+"""
+import os
+from time import time
+
+from PyQt5.QtCore import QUrl, pyqtSlot, pyqtSignal
+from PyQt5.QtWebChannel import QWebChannel
+from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
+from PyQt5.QtWidgets import QMessageBox, QWidget, QVBoxLayout, QPushButton
+
+
+__Author__ = 'Irony'
+__Copyright__ = 'Copyright (c) 2019'
+
+
+class WebEngineView(QWebEngineView):
+
+ customSignal = pyqtSignal(str)
+
+ def __init__(self, *args, **kwargs):
+ super(WebEngineView, self).__init__(*args, **kwargs)
+ self.initSettings()
+ self.channel = QWebChannel(self)
+ # 把自身对象传递进去
+ self.channel.registerObject('Bridge', self)
+ # 设置交互接口
+ self.page().setWebChannel(self.channel)
+
+ # START #####以下代码可能是在5.6 QWebEngineView刚出来时的bug,必须在每次加载页面的时候手动注入
+
+# self.page().loadStarted.connect(self.onLoadStart)
+# self._script = open('Data/qwebchannel.js', 'rb').read().decode()
+
+# def onLoadStart(self):
+# self.page().runJavaScript(self._script)
+
+ # END ###########################
+
+ # 注意pyqtSlot用于把该函数暴露给js可以调用
+ @pyqtSlot(str)
+ def callFromJs(self, text):
+ QMessageBox.information(self, "提示", "来自js调用:{}".format(text))
+
+ def sendCustomSignal(self):
+ # 发送自定义信号
+ self.customSignal.emit('当前时间: ' + str(time()))
+
+ @pyqtSlot(str)
+ @pyqtSlot(QUrl)
+ def load(self, url):
+ '''
+ eg: load("https://pyqt5.com")
+ :param url: 网址
+ '''
+ return super(WebEngineView, self).load(QUrl(url))
+
+ def initSettings(self):
+ '''
+ eg: 初始化设置
+ '''
+ # 获取浏览器默认设置
+ settings = QWebEngineSettings.globalSettings()
+ # 设置默认编码utf8
+ settings.setDefaultTextEncoding("utf-8")
+ # 自动加载图片,默认开启
+ # settings.setAttribute(QWebEngineSettings.AutoLoadImages,True)
+ # 自动加载图标,默认开启
+ # settings.setAttribute(QWebEngineSettings.AutoLoadIconsForPage,True)
+ # 开启js,默认开启
+ # settings.setAttribute(QWebEngineSettings.JavascriptEnabled,True)
+ # js可以访问剪贴板
+ settings.setAttribute(
+ QWebEngineSettings.JavascriptCanAccessClipboard, True)
+ # js可以打开窗口,默认开启
+ # settings.setAttribute(QWebEngineSettings.JavascriptCanOpenWindows,True)
+ # 链接获取焦点时的状态,默认开启
+ # settings.setAttribute(QWebEngineSettings.LinksIncludedInFocusChain,True)
+ # 本地储存,默认开启
+ # settings.setAttribute(QWebEngineSettings.LocalStorageEnabled,True)
+ # 本地访问远程
+ settings.setAttribute(
+ QWebEngineSettings.LocalContentCanAccessRemoteUrls, True)
+ # 本地加载,默认开启
+ # settings.setAttribute(QWebEngineSettings.LocalContentCanAccessFileUrls,True)
+ # 监控负载要求跨站点脚本,默认关闭
+ # settings.setAttribute(QWebEngineSettings.XSSAuditingEnabled,False)
+ # 空间导航特性,默认关闭
+ # settings.setAttribute(QWebEngineSettings.SpatialNavigationEnabled,False)
+ # 支持平超链接属性,默认关闭
+ # settings.setAttribute(QWebEngineSettings.HyperlinkAuditingEnabled,False)
+ # 使用滚动动画,默认关闭
+ settings.setAttribute(QWebEngineSettings.ScrollAnimatorEnabled, True)
+ # 支持错误页面,默认启用
+ # settings.setAttribute(QWebEngineSettings.ErrorPageEnabled, True)
+ # 支持插件,默认关闭
+ settings.setAttribute(QWebEngineSettings.PluginsEnabled, True)
+ # 支持全屏应用程序,默认关闭
+ settings.setAttribute(
+ QWebEngineSettings.FullScreenSupportEnabled, True)
+ # 支持屏幕截屏,默认关闭
+ settings.setAttribute(QWebEngineSettings.ScreenCaptureEnabled, True)
+ # 支持html5 WebGl,默认开启
+ settings.setAttribute(QWebEngineSettings.WebGLEnabled, True)
+ # 支持2d绘制,默认开启
+ settings.setAttribute(
+ QWebEngineSettings.Accelerated2dCanvasEnabled, True)
+ # 支持图标触摸,默认关闭
+ settings.setAttribute(QWebEngineSettings.TouchIconsEnabled, True)
+
+
+class Window(QWidget):
+
+ def __init__(self, *args, **kwargs):
+ super(Window, self).__init__(*args, **kwargs)
+ layout = QVBoxLayout(self)
+ self.webview = WebEngineView(self)
+ layout.addWidget(self.webview)
+ layout.addWidget(QPushButton(
+ '发送自定义信号', self, clicked=self.webview.sendCustomSignal))
+
+ self.webview.windowTitleChanged.connect(self.setWindowTitle)
+ self.webview.load(QUrl.fromLocalFile(
+ os.path.abspath('Data/JsSignals.html')))
+
+
+if __name__ == "__main__":
+ from PyQt5.QtWidgets import QApplication
+ import sys
+ # 开启F12 控制台功能,需要单独通过浏览器打开这个页面
+ # 这里可以做个保护, 发布软件,启动时把这个环境变量删掉。防止他人通过环境变量开启
+ os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = '9966'
+ app = QApplication(sys.argv)
+ w = Window()
+ w.show()
+ w.move(100, 100)
+
+ # 打开调试页面
+ dw = QWebEngineView()
+ dw.setWindowTitle('开发人员工具')
+ dw.load(QUrl('http://127.0.0.1:9966'))
+ dw.move(600, 100)
+ dw.show()
+ sys.exit(app.exec_())
diff --git a/QWebEngineView/README.md b/QWebEngineView/README.md
index 83f791f..7a37e74 100644
--- a/QWebEngineView/README.md
+++ b/QWebEngineView/README.md
@@ -2,10 +2,20 @@
- 目录
- [获取Cookie](#1、获取Cookie)
+ - [和Js交互操作](#2、和Js交互操作)
## 1、获取Cookie
[运行 GetCookie.py](GetCookie.py)
通过`QWebEngineProfile`中得到的`cookieStore`并绑定它的`cookieAdded`信号来得到Cookie
-![GetCookie](ScreenShot/GetCookie.png)
\ No newline at end of file
+![GetCookie](ScreenShot/GetCookie.png)
+
+## 2、和Js交互操作
+[运行 JsSignals.py](JsSignals.py)
+
+通过`qwebchannel.js`和`QWebChannel.registerObject`进行Python对象和Javascript的交互
+
+具体看代码中的注释
+
+![JsSignals](ScreenShot/JsSignals.gif)
\ No newline at end of file
diff --git a/QWebEngineView/ScreenShot/JsSignals.gif b/QWebEngineView/ScreenShot/JsSignals.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1629e8e9eb2f8dcdb49f89d00cc9e73495c4ede5
GIT binary patch
literal 353133
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