我想继承 QObject
类,并将继承类的元对象注册到qjsengine示例,以便调用 let instance = new TrialObject();
在javascript中。这是我的密码:
from PyQt6.QtQml import QJSEngine
from PyQt6.QtCore import QCoreApplication, QObject
JS = """
(function() {
let a = new TrialObject();
return a;
})();
"""
class AttributeHandler(QObject):
def __init__(self, parent=None):
QObject.__init__(self, parent)
class Main:
def __init__(self):
self.jsHandler = QJSEngine()
self.jsHandler.globalObject().setProperty("TrialObject", self.jsHandler.newQMetaObject(QObject.staticMetaObject))
r = self.jsHandler.evaluate(JS)
print(r.toString())
if __name__ == "__main__":
app = QCoreApplication([])
main = Main()
app.exec()
当(如上所述),我使用 QObject.staticMetaObject
作为 TialObject
,javascript运行正常,并返回 QObject
回到python。因此 QObject
是可调用和工作的。但当我尝试替换 QObject.staticMetaObject
与 AttributeHandler.staticMetaObject
,我得到错误: TypeError: AttributeHandler has no invokable constructor
... 显示attributehandler不可调用。“invokable”是指javascript可以创建类的新示例 TrialObject
,我希望它是一个用python创建的类,并继承 QObject
.
如何注册继承的 QObject
的元对象 QJSEngine
这样它是可调用的,即一个新示例可以在javascript中示例化?
(pyqt6、python 3.9、windows 10)
暂无答案!
目前还没有任何答案,快来回答吧!