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