8
我已經在下面的答案中找到並編輯了。如何正確地將pyqt的值返回給JavaScript?
我想從python代碼返回值到QtWebKit中的javascript上下文。到目前爲止,我有這樣一個類:
class Extensions(QtCore.QObject):
@QtCore.pyqtSlot()
def constant_one(self):
return 1;
# ... later, in code
e = Extensions();
def addextensions():
webview.page().mainFrame().addToJavaScriptWindowObject("extensions", e);
# ...
webview.connect(webview.page().mainFrame(), QtCore.SIGNAL("javaScriptWindowObjectCleared"), addextensions)
我可以調用這個函數在Javascript中,像這樣:
var a = extensions.constant_one();
和它得到的確實叫(我用打印在那裏驗證);但仍然沒有定義。爲什麼沒有得到從函數返回的值?我也嘗試在QVariant中包裝一個,但迄今爲止沒有骰子。
編輯:我找到了答案。顯然,QtWebKit需要結果類型作爲提示。可以這樣提供給pyqtSlot-Decorator,像這樣:
class Extensions(QtCore.QObject):
@QtCore.pyqtSlot(result="int")
def constant_one(self):
return 1;
然後它工作正常。如果有人發現別的東西,我應該再做兩天。
或者用於字符串使用'(result = str)'not'(result =「str」)' – iman 2014-10-16 09:04:35