问题标签 [qtwebchannel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何使用 Qt WebEngine 和 QWebChannel?
我正在使用新的 WebEngine 来玩耍和学习。我一直在尝试使用 Qt WebKit 找到一些类似的方法:addToJavaScriptWindowObject()
我发现使用 Qt WebEngine,我必须使用将QWebChannel
函数注册到 JavaScript 窗口对象。如果这是正确的,它将带我进入以下问题。
我已经在我的电脑上安装了 Qt 5.4.0。我注意到qwebchannel.js
在我的计算机上安装的 SDK 中找不到它。我在 Git 源代码上找到了它。
如果我有一个带有QWebEnginePage
and的 Qt 本机桌面应用程序QWebEngineView
,我需要什么才能在 JavaScript 窗口对象上注册函数?
我的桌面应用程序会自动导航到我创建的 http 页面。所以我可以访问连接到QWebEngineView
.
需要采取哪些步骤才能完成这项工作?
javascript - 如何使用 QWebChannel 将信息从 JS 传递到 Python
我通过 PyQt5 在 Python 中构建了一个 GUI。我正在展示一个带有谷歌地图页面的网络浏览器。用户应该移动标记,我的程序应该处理标记的坐标。因此我必须将坐标从 JS 传递给 Python,但我无法让它工作。
这是 HTML 文件:
这是Python代码:
使用 GUI 代码:
我知道最简单的方法是使用 QWebChannel。我在这里找到了一个例子,但我无法适应我的情况。
有什么建议吗?
python - 带有 QtWebChannel 的叶弹出窗口
我在 QtWebEngineView 中显示一个folium 生成的 HTML(用于 leaflet.js)。在弹出窗口中,我有一个带有单击功能的按钮,它应该在 python 中调用一个方法。但我似乎无法让频道正常工作。我不确定我是否在 QtWebChannel 或 JS 上做错了,或者它可能是 folium?
我已经将以下 javascript 注入到 QWebChannel.js 的末尾,它在末尾加载<body>
这是我的 Python 代码
非常感谢您帮助解决这个问题
让我知道我是否应该为弹出窗口或 leaflet.js api 发布 folium 生成的 html
python - PyQt QtWebChannel:从 JavaScript 调用 Python 函数
我正在尝试使用 Qt 类QWebEngineView
,并QWebChannel
在 HTML 页面和 Python 脚本之间建立一个简单的连接。目标只是在单击foo()
标题时执行<h2>
。
问题似乎是该变量在构造函数之外backend
不可见。QWebChannel
我试图创建backend
一个属性widnow
以使其全局化,但它不起作用。
javascript - 如何将值从 JS 传递回 Python
我想用 Python 显示一个 2D 地图,然后在 Python 代码中对游标的坐标做一些事情。但是,我无法获得 Python 部分的坐标。这是我的代码:
如果代码保留在一个文件中会很好,但如果完全不可能在一次拆分中完成它是可以接受的。我想解决 mny 问题的第一步是从 HTML/JS 部分调用一个函数,因为 backend.print("test") 也不起作用。我还注意到 self.exec() 阻止了其余代码,有没有办法在地图运行时执行任何其他代码?谢谢!
python - PySide2 和支持 addToJavaScriptWindowObject
我正在尝试将 PySide 应用程序版本 #1 移植到 PySide2 并努力寻找移植以下代码片段的解决方案:
我在必须找到可能修复的文档中找不到
python - 在从 JS 到 PyQt5 的鼠标点击时存储 lat long
我正在尝试将鼠标单击时的纬度/经度存储到几何点。所以基本上当用户点击地图时,我需要获取这些坐标(纬度/经度)并将它们存储到变量中,例如point = Point(lat, lng)
,我可以计算最近的几何图形并从 PostGIS 中提取数据。
我知道我需要建立后端@pyqtSlot(float,float)
,但是由于我是新手,所以我无法让它工作。我有这个由 QtDesigner 生成的代码,你不必为所有的按钮而烦恼。这是 HTML/JS 部分:
这是 PyQt 代码,它们都在同一个 .py 中。一开始我有Backend()
应该做的工作。你可以跳到def setupUI
和self.mapa = QtWidgets.QWidget(self.centralwidget)
看我打电话的地方Backend()
:
我看到了类似的问题,但到目前为止还不能让它工作......在 PyQt4 中我几乎可以工作,但由于我不擅长 JS,我不知道如何返回 lat/lng 而不是 getCenter().lat这段代码:
qt - QML 中基于 WebSockets 的 Qt WebView 和 WebChannel
我想从在WebView中运行的 HTML 页面访问QtObject - 调用方法、读/写属性等。
据我了解,我需要在 QML 和 HTML 端之间建立WebSockets连接,然后将其用作WebChannel的传输。
不要将 WebView 与WebEngineView混淆——我知道如何用 WebEngineView 来做,但我需要用 WebView 来做。
所以,这就是我所拥有的。
QML 端
HTML 端
简单的消息交换工作正常(socket.send()
),所以传输没问题,但是如何将 WebChannel 分配给 WebView?使用 WebEngineView 很简单,那里有一个webChannel
属性(甚至不需要使用 WebSockets),但在 WebView 中没有任何相似之处。我的意思是,必须告诉 WebView WebChannel 包含我的 QtObject 以便对 JS 可见?
如果 WebView 不支持 WebChannel(?),那么如何使用外部浏览器呢?这个例子表明使用 C++ 是可能的,但我想用 QML 来做。
我使用 Qt 5.11.1。
c++ - QWebChannel 新客户端获取初始状态?
无论好坏,我都在探索使用 QWebChannel 作为创建网络视频游戏的方法。我遇到了一个问题,当 new.clients 加入时,他们会收到原来的游戏状态,而没有其他客户端所做的任何增量更改。
查看网络频道聊天客户端示例,它看起来客户端直接链接到changed
信号,然后使用方法/属性调用直接拉取属性。
QWebChannel 不会增量更新新客户端的状态吗?有没有办法解决这个问题?
我目前有一个QVariantList
属于 QObects 的属性。每个 QObject 都有一个enabled
可以更新的属性。新客户正在变得陈旧,这让我发疯。