如何在 PyQT 5.7 中从 JavaScript 访问 Python 代码?

2024-04-17

我曾经通过附加一个对象来做到这一点

self.page().mainFrame().addToJavaScriptWindowObject("js_interface", self.jsi)

在 5.7 中我这样做:

self.page().setWebChannel(self.jsi)

但当我尝试访问公开的函数时,我会得到一个 JavaScript 错误,这是可以理解的:

js: Uncaught ReferenceError: js_interface is not defined

谷歌搜索后我发现我应该使用 qwebchannel.js,但我找不到文件或有关如何在任何地方使用它的说明(有一些信息,但仅在安装 QT 时提供的一些示例中,而不是 PyQT)。


您可以包括qwebchannel.js使用 script 标签进入 html 页面:

<script src="qrc:///qtwebchannel/qwebchannel.js"></script>

然后,在 python 端创建一个 Web 通道:

from PyQt5.QtCore import QObject, pyqtSlot
from PyQt5.QtWebChannel import QWebChannel
from PyQt5.QtWebEngineWidgets import QWebEngineView

class CallHandler(QObject):
    @pyqtSlot()
    def test(self):
        print('call received')

view = QWebEngineView()
channel = QWebChannel()
handler = CallHandler()
channel.registerObject('handler', handler)
view.page().setWebChannel(channel)

与Web通道交互的JS代码:

new QWebChannel(qt.webChannelTransport, function (channel) {
    window.handler = channel.objects.handler;
    window.handler.test();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PyQT 5.7 中从 JavaScript 访问 Python 代码? 的相关文章

  • 如何在python中修改html树?

    假设有一些可变片段html代码 p span class code string 1 span class code string 2 span class code string 3 span span span p p span cla
  • 隐藏控制台窗口

    problem 我开始使用 Python 和 Tkinter 设计 GUI 应用程序 当我使用 cxFreeze 冻结脚本时 然后当我在计算机上运行该 EXE 文件时 然后首先打开控制台窗口 在 Windows XP 中为黑色 DOS sh
  • 同位素重叠图像?

    似乎它只发生在 Chrome 和 Safari 中 而不是 Firefox 我将它与基础响应框架一起使用 所以我不确定如何设置高度 Chrome Safari 中的图像之间似乎也没有足够的间距 我该如何解决 编辑 这是一个小提琴http j
  • 未捕获(承诺中)语法错误:获取函数中出现意外的标记'

    我有几个结构如下的 JSON 文件 我们称之为 info json data title Job company Company past fulltime Former Company intern Women IT Priority 5
  • python 解码部分 utf-8 字节数组

    我从不了解 UTF 8 规则的通道获取数据 因此 有时当 UTF 8 使用多个字节来编码一个字符并且我尝试将部分接收到的数据转换为文本时 我在转换过程中遇到错误 根据接口的性质 没有任何结束的流 我无法找出数据何时已满 因此我需要处理部分
  • 如何让 lodash 与 Angular JS 一起工作?

    我正在尝试使用 lodash 使用它ng repeat指令 以这种方式 div div Hello n div div Being GridController IndexModule controller GridController f
  • 如何将嵌套的 javascript 对象转换为仅第一级属性对象?

    我有以下对象inputObj我想将其转换为一个简单的对象 例如outputObj var inputObj a 1 b true c string1 d e string2 f false g 5 h i 7 j string3 k nam
  • 如何通过向上移动到地址栏来检测鼠标离开页面?

    我创建了一个 jQuery 事件 当访问者离开页面时会弹出一个对话框 我正在使用 e pageY 来检测鼠标位置 当鼠标位于Y 小于2时 弹出对话框 问题是 当我向下滚动页面并决定离开页面时 弹出窗口不会显示 因为鼠标不在 Y 小于 2 处
  • 在 Python 3 中,两个正数相乘会得到负输出

    我有一个数据框df1 df1 head wght num links id y id x 3 133 0 000203 2 186 0 000203 2 5 6 0 000203 2 98 0 000203 2 184 0 000203 2
  • 是否可以通过 MX 查找获取端口?

    我正在了解什么是的旅程从 Python 代码发送电子邮件的正确方法 https stackoverflow com questions 50695188 what is the proper way to actually send mai
  • python matplotlib 无边框表格

    我在表格顶部有一个由以下示例生成的图 表格数据被随机数替换 实际绘图被一些任意函数替换 import numpy as np import matplotlib pylab as plt fig ax plt subplots ntp 17
  • 加载对象内容后运行 Javascript 函数

    当内容的内容时 如何运行 Javascript 函数已加载 这DOMContentLoaded事件在此之前触发 以及依赖它的东西 例如 JQuery 的 同样地 Compare this http plnkr co edit znu5iz3
  • AngularJS 和 Webpack 集成

    我正在寻找一些使用帮助webpack http webpack github io docs 对于大型 AngularJS 应用程序 我们使用基于功能的文件夹结构 每个功能 页面都有一个模块 并且它们有控制器 指令 我已经成功配置了 web
  • 在包含一些通配符的大型列表中进行成员资格测试

    当列表包含特殊类别时 如何测试某个短语是否在大型 650k 短语列表中 例如 我想测试这个短语是否 he had the nerve 在列表中 确实如此 但是在 he had DETERMINER nerve where DETERMINE
  • 如何组合多个 TUI 表单来编写更复杂的应用程序?

    我想写一个程序T基于外部的User I界面 TUI https en wikipedia org wiki Text based user interface 由多种形式组成 第一种形式包含一个 列表 每个列表元素代表一个按钮 如果按下相应
  • 我应该在 HTML 中添加什么内容来确保用户获得我的页面的最新版本,而不是旧版本?

    我有一个主要由 CDN 提供服务的静态 HTML 网站 加上一些到服务器的 AJAX 并且确实希望用户的浏览器缓存所有内容 直到我更新任何文件 然后我希望用户的浏览器获取新版本 对于我网站上的所有类型的静态文件 HTML JS CSS 图像
  • 将对象解构为数组

    我有这个对象 const foo a kitten b puppy c lion 将其解构为变量就像这样 const a b c foo 是否有一个简单的方法如何将其解构为数组 以便结果是 const array a b c 据我所知 没有
  • 从Python中的一行中删除标签

    我有一个具有以下架构的文本 word1 word2 br word3 word4 br 我想删除最后一部分 并将我的结果存储在另一个文件中 我已尝试以下操作 仍然没有将结果保存在其他文件中 def main fileR open test
  • 如何使用 numpy 数组加速分形生成?

    这是我为使用牛顿方法制作分形而编写的一个小脚本 import numpy as np import matplotlib pyplot as plt f np poly1d 1 0 0 1 x 3 1 fp np polyder f def
  • 量角器元素(..)从单独的文件返回未定义

    我正在编写一个 Protractor 测试 在我的 test step js 文件中我有 element by css getText then function text expect text to equal expectedText

随机推荐