PyQt
是一个用于创建桌面应用程序的 Python 绑定库,它基于 Qt 框架。QWebEnginePage
是 PyQt 中的一个类,用于处理网页内容。runJavaScript()
方法允许你在网页上下文中执行 JavaScript 代码。
要从 QWebEnginePage.runJavaScript()
获取返回值,你可以使用信号和槽机制。以下是一个简单的示例:
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:
pip install PyQt5 PyQtWebEngine
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云