首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从PyQt的QWebEnginePage.runJavaScript()中获取返回值

PyQt 是一个用于创建桌面应用程序的 Python 绑定库,它基于 Qt 框架。QWebEnginePage 是 PyQt 中的一个类,用于处理网页内容。runJavaScript() 方法允许你在网页上下文中执行 JavaScript 代码。

要从 QWebEnginePage.runJavaScript() 获取返回值,你可以使用信号和槽机制。以下是一个简单的示例:

代码语言:txt
复制
import sys
from PyQt5.QtCore import QUrl, QObject, pyqtSignal
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage

class MyWebEnginePage(QWebEnginePage):
    # 定义一个信号,用于传递 JavaScript 返回值
    javaScriptResult = pyqtSignal(object)

    def __init__(self, parent=None):
        super().__init__(parent)

    def runJavaScript(self, script, callback=None):
        # 重写 runJavaScript 方法
        super().runJavaScript(script, self._handleJavaScriptResult)

    def _handleJavaScriptResult(self, result):
        # 当 JavaScript 执行完毕时,发射信号
        self.javaScriptResult.emit(result)

class MyApp(QObject):
    def __init__(self):
        super().__init__()

        self.app = QApplication(sys.argv)
        self.web_view = QWebEngineView()
        self.web_page = MyWebEnginePage(self.web_view)

        # 连接信号和槽
        self.web_page.javaScriptResult.connect(self.onJavaScriptResult)

        self.web_view.setPage(self.web_page)
        self.web_view.load(QUrl("https://www.example.com"))

        sys.exit(self.app.exec_())

    def onJavaScriptResult(self, result):
        # 处理 JavaScript 返回值
        print("JavaScript 返回值:", result)

if __name__ == "__main__":
    MyApp()

在这个示例中,我们创建了一个自定义的 MyWebEnginePage 类,它继承自 QWebEnginePage。我们重写了 runJavaScript() 方法,并在其中调用了一个私有方法 _handleJavaScriptResult(),该方法会在 JavaScript 执行完毕时发射一个信号 javaScriptResult

我们还创建了一个 MyApp 类,它包含一个 QWebEngineView 和一个 MyWebEnginePage 实例。我们将 javaScriptResult 信号连接到一个槽函数 onJavaScriptResult(),该函数会处理 JavaScript 返回值。

要使用这个示例,请确保你已经安装了 PyQt5 和 PyQtWebEngine:

代码语言:txt
复制
pip install PyQt5 PyQtWebEngine

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券