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

PyQt5 HTML与本地代码交互
本文介绍如何使用PyQt5.9中的QWebEngineView和QWebChannel技术实现HTML与本地Python代码的交互。通过创建交互对象、设置WebChannel及在HTML中引入qwebchannel.js等步骤,演示了具体实现过程。

在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 sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QObject, pyqtSlot, QUrl
from PyQt5.QtWebChannel import QWebChannel
from PyQt5.QtWebEngineWidgets import QWebEngineView

class 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. 没有查到相应文档

转载于:https://www.cnblogs.com/yaoyu126/p/7524625.html

HTML5开发精要实例详解(完整版源代码含说明文档)内容分为两大部分:第一部分通过一系列中大型案例全方位对html 5的各个重要知识点进行了详细的讲解,每个案例包含案例概述、页面效果展示、案例所涉及主要知识点(精要)、源代码剖析4个部分,读者既能根据书中的步骤动手实践,又能重点学习案例中用到的核心理论知识,同时还能领会源代码的设计思路和方法;第二部分讲解了jwebsocket、rgraph、webgl等3个重要框架和技术的详细使用方法。 《html 5开发精要实例详解》一共12章:第1章分别用2个案例演示了如何利用html 5中的结构元素来构建一个博客网站和企业门户网站;第2章用2个案例讲解了表单在html 5中的使用;第3章用6个案例讲解了如何利用canvas元素来绘制图形、图像和制作动画;第4章用2个案例介绍了文件apt和拖放api的使用方法; 第5章用4个案例讲解了如何打造自己的网页视频播放器、网页音频播放器,以及实现视频实时回放和视频截图等多媒体功能;第6章用6个案例全面讲解了html 5中的本地存储技术;第7章用单点登录和获取批量数据这2个案例讲解了html 5中的跨文档的消息传输技术;第8章用2个案例讲解了如何利用web workers实现多线程处理;第9章用1个案例讲解了如何利用geolocation api来获取地理位置信息;第10~13章分别讲解了socket通信框架jwebsocket、统计图制作插件rgraph、三维web开发技术webgl的详细使用方法,并辅之以丰富的案例。 《html 5开发精要实例详解》所有案例的源代码都是作者亲自编写并调试和运行成功的。读者可以利用这些代码进行实战练习,也可以根据需要对这些代码进行修改,以观察不同的效果,从而加深对案例代码和书中知识点的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值