как мне правильно вернуть значения из pyqt в JavaScript?

Я уже нашел и отредактировал в ответе ниже.

Я хочу вернуть значения из кода 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;

, и тогда он будет работать правильно. Оставьте это открытым еще на два дня, на случай, если кто-то найдет что-то еще, что я должен делать.

9
задан CONTRACT SAYS I'M RIGHT 16 June 2011 в 13:22
поделиться