分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

PyQt5.9 Html与本地代码交互实例

发布时间:2023-09-06 01:11责任编辑:郭大石关键词:暂无标签

在PyQt5.9中, 应用QWebEngineView和QWebChannel技术, 可以进行HTML与本地代码进行交互.

要点:

  1. 创建交互对象, 基于QObject, 定义信息槽
  2. 创建QWebChannel, 在channel中注册交互对象
  3. 设置页面WebChannel
  4. 定义网页
    • 在网页中包含qwebchannel.js
    • 在DomReady时, 创建js QWebChannel, 连接到本地对象

实例:

一. 创建Html文件

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head> ???<meta charset="utf-8" /> ???<script type="text/javascript" src="qwebchannel.js"></script> ???<title>QWebChannel测试</title> ???<script> ???????window.onload = function () { ???????????new QWebChannel(qt.webChannelTransport, function (channel) { ???????????????window.pyjs = channel.objects.pyjs; ???????????????alert(pyjs.myHello()) ???????????}); ???????} ???</script></head><body> ???</body></html>

qwebchannel.js源代码

二. 创建Python代码

#!/usr/bin/env python# -*- coding:utf-8 -*-import sysfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtCore import QObject, pyqtSlot, QUrlfrom PyQt5.QtWebChannel import QWebChannelfrom PyQt5.QtWebEngineWidgets import QWebEngineViewclass CallHandler(QObject): ???@pyqtSlot(result=str) ???def myHello(self): ???????print(‘call received‘) ???????return ‘hello, Python‘if __name__ == ‘__main__‘: ???app = QApplication(sys.argv) ???view = QWebEngineView() ???channel = QWebChannel() ???handler = CallHandler() ???channel.registerObject(‘pyjs‘, handler) ???view.page().setWebChannel(channel) ???url_string = "file:///D:/qt5/201709/webengine/test.html" ???view.load(QUrl(url_string)) ???view.show() ???sys.exit(app.exec_())

 问题:

在PyQt5.9中, QWebEngineView响应调用pyqtSlot时, 没有返回值, 返回null. 没有查到相应文档

PyQt5.9 Html与本地代码交互实例

原文地址:http://www.cnblogs.com/yaoyu126/p/7524625.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved