試一試。它使用addToJavaScriptWindowObject方法將QObject添加到QWebView中。這將啓用你的python腳本和你的webview中的HMTL/Javascript之間的通信。下面的例子讓你可以通過JavaScript提示將javascript全局變量消息的值更改爲任何你想要的值,然後當你點擊Python打印消息鏈接時,它將執行你的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_())
我使用webkit.WebView,因爲我必須在現有的glade(libglade)應用程序中顯示它...這是否仍然可行? – Schoelje
你可以在問題中發佈一些你的代碼嗎?你使用的是gtk,因爲webkit已經綁定了qt和gtk。哪一個你使用 –
我正在使用gtk。 – Schoelje