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

  • 相关阅读:
    Yii2中把路由地址中的%2F改为/
    深度解析常用的软件开发模型
    MYSQL索引的类型和索引的方式
    mysql errno 150
    士兵杀敌(五)
    stringstream字符串流
    士兵杀敌(二)(线段树+树状数组)
    士兵杀敌(一)(树状数组)
    C语言文件读写操作总结
    BC第二场
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/7524625.html
Copyright © 2011-2022 走看看