Я уже нашел и отредактировал ответ ниже.
Я хочу вернуть значения из кода Python в контекст javascript в QtWebKit.Пока у меня есть такой класс:
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();
, и она действительно вызывается (я проверял с помощью printтам);но все равно остается неопределенным.Почему не получить значение, возвращаемое из функции?Я также попытался обернуть a в QVariant, но пока без кубиков.
Редактировать: я нашел ответ. По-видимому, QtWebKit нужен тип результата в качестве подсказки.Это можно передать pyqtSlot-Decorator следующим образом:
class Extensions(QtCore.QObject):
@QtCore.pyqtSlot(result="int")
def constant_one(self):
return 1;
, и тогда он будет работать правильно.Оставлю это открытым еще на два дня, на случай, если кто-то найдет что-то еще, что я должен делать.