试试这个。它使用 addToJavaScriptWindowObject 方法将 QObject 添加到 QWebView 中。这将启用您的 python 脚本和 webview 中的 HMTL/Javascript 之间的通信。下面的示例将允许您通过 JavaScript 提示将 javascript 全局变量消息的值更改为您想要的任何值,然后每当您单击 Python Print Message 链接时,它将执行您的 python 代码,该代码将获取 javascript 值并打印它到控制台。
import sys
from PyQt4 import QtCore, QtGui, QtWebKit
HTML = """
<html><body onload="broker.print_msg(message)">
<script>var message = 'print_msg message'</script>
<a href="javascript:message=prompt('Enter Message')">Change Message</a><br/>
<a href="javascript:broker.print_msg(message)">Python Print Message</a>
</body></html>
"""
class Broker(QtCore.QObject):
@QtCore.pyqtSlot(str)
def print_msg(self, data):
print data
app = QtGui.QApplication(sys.argv)
view = QtWebKit.QWebView()
view.page().mainFrame().addToJavaScriptWindowObject('broker', Broker(view))
view.setHtml(HTML)
window = QtGui.QMainWindow()
window.setCentralWidget(view)
window.show()
sys.exit(app.exec_())