pyqtSlot()和返回类型python列表

5 投票
1 回答
3304 浏览
提问于 2025-04-18 05:35

我需要使用pyqtSlot()这个装饰器,目的是把一个Python函数暴露给JavaScript代码。
因为我的返回类型是列表,所以我应该这样写:
@pyqtSlot(result=list)
但是我遇到了一个错误:
"TypeError: 无法将Python的'list'对象转换为C++的'PyQt_PyObject'实例"

我做了一些研究,但还是找不到解决办法。
根据pyqt的文档,我可以返回任何Python类型的对象,或者用字符串指定一个C++类型,所以我尝试用result='array'。
但这也不行,可能是我做错了什么。

@pyqtSlot(result=list)
def getCodeList(self):
    return self.codeList

1 个回答

9

我想我找到了一种方法。
我只是用QVariant()把Python列表包裹起来,然后返回这个QVariant。

@pyqtSlot(result=QVariant)
def getCodeList(self):
    return QVariant(self.codeList)

谢谢QVariant。

撰写回答