решено: Смотрите мой ответ ниже.Я не могу принять в течение 2 дней.
У меня есть объект Python, полученный из QObject, чьи методы я вызываю из QML.Эти методы, конечно, украшены @ pyqtSlot .Однако возникает проблема, когда я пытаюсь объединить свои собственные декораторы, например, так:
@pyqtSlot()
@decorator
def call(self):
print('Called!')
Я получаю ошибку file:X.qml:99: TypeError: Property 'call' of object X(0x7fed4c07fa50) is not a function
Это декоратор, который я использую:
def decorator(f):
def wrapped(self):
print('get decorated')
return f(self)
return wrapped
Может кто-нибудь уточнить, почему это не работает?Какое поведение PyQt?Или я что-то не так делаю?
ПРИМЕЧАНИЕ: Это сработает, если декоратор просто вернет f
, проблемы в том, что декоратор возвращаетвложенные функции, такие как wrapped
.