zoukankan      html  css  js  c++  java
  • PyQt5.9 Html与本地代码交互实例

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

  • 相关阅读:
    Makefile中的函数
    Android命令行工具使用总结
    功耗杂项笔记汇总
    Repo学习笔记
    CPU调度——EAS调度器
    Android log常用分析方法
    event log 分析
    用户空间控制驱动与设备的绑定与解绑
    内核工具 – Sparse 简介
    在docker宿主机上查找指定容器内运行的所有进程的PID
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/7524625.html
Copyright © 2011-2022 走看看