【问题标题】:pyqtSlot() and return type python listpyqtSlot() 和返回类型 python 列表
【发布时间】:2014-05-07 18:50:42
【问题描述】:

我需要使用 pyqtSlot() 装饰器来将 python 函数公开给 javascript 代码。
返回类型是列表,所以我应该写:
@pyqtSlot(结果=列表)
但我得到一个错误:
“TypeError:无法将 Python 'list' 对象转换为 C++ 'PyQt_PyObject' 实例”

我做了一些研究,但找不到答案。
根据 pyqt doc,我可以返回任何 python 类型对象或指定 C++ 类型的字符串,所以我尝试了 result='array'。
但它不起作用或我做错了什么。

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

【问题讨论】:

标签: python pyqt


【解决方案1】:

我想我找到了办法。
我只是用 QVariant() 包装 python 列表并返回 QVariant。

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

感谢 QVariant。

【讨论】:

  • 以后怎么把QVariant转成list?
  • 我不需要转换。它只是工作。但是如果我尝试根据我的小知识来理解为什么.. pyqtSlot 装饰器是为了将结果传递给 Qt 编写的语言 C++。所以 python 中的列表类型使用 QVariant 转换为 C++ 的数组类型.并且所有这些都是为了让 QtWebkit 桥接技术可以将用 C++(或使用装饰器 pyqtSlot 的 python)编写的代码公开给 javascript 代码。我写的所有内容都不是 100% 确定的。所以请谨慎使用。
猜你喜欢
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2020-02-29
  • 2013-06-11
  • 2021-08-03
  • 2021-03-11
相关资源
最近更新 更多