我已经在下面的答案中找到并编辑了.
我想在QtWebKit中将值从python代码返回到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)
Run Code Online (Sandbox Code Playgroud)
我可以从Javascript中调用此函数,如下所示:
var a = extensions.constant_one();
Run Code Online (Sandbox Code Playgroud)
它确实被称为(我在那里用印刷品验证过); 但仍然最终未定义.为什么不从函数返回值?我也试过在QVariant中包装一个,但到目前为止还没有骰子.
编辑:我找到了答案.显然,QtWebKit需要结果类型作为提示.可以将它提供给pyqtSlot-Decorator,如下所示:
class Extensions(QtCore.QObject):
@QtCore.pyqtSlot(result="int")
def constant_one(self):
return 1;
Run Code Online (Sandbox Code Playgroud)
然后它正常工作.让这个开放另外两天,以防有人发现我应该做的其他事情.
CON*_*GHT 10
在发布问题后不久,我自己找到了答案:显然,QtWebKit需要结果类型作为提示.可以将它提供给pyqtSlot-Decorator,如下所示:
class Extensions(QtCore.QObject):
@QtCore.pyqtSlot(result="int") # just int (type object) also works
def constant_one(self):
return 1;
Run Code Online (Sandbox Code Playgroud)
然后它正常工作.
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |