我正在寻找一种将 MyWidget 类的非静态方法注册为 python 方法的方法。
MyWidget 类是一个 QWidget 类,它位于主窗口中。因此,我想在启动应用程序时初始化 python,然后我想从 MyWidget 类中的 MyTableWidget (QTableWidget) 中检索信息。我喜欢将 itemCount 非静态方法注册为 python 方法。我不能这样做,因为非静态对象注册在下面的 myPythonCommands 上给出了错误。
我检查了 boost::python 但找不到方法。据我所知,在 C++ 中创建一个 python 类是文档封面,但不是他的。
我想知道你们中是否有人知道一种方法并指出我正确的方向?
class MyTableWidget
{
};
class MyWidget
{
MyWidget()
{
Py_Initialize();
Py_InitModule("myApp", myPythonCommands);
}
~MyWidget()
{
Py_Finalize();
}
int itemCount()
{
return table.itemCount(); //return item count (in table) to python
}
MyTableWidget table;
};
static PyMethodDef myPythonCommands[] = {
{"itemCount", itemCount, METH_NOARGS, ""}, // here is the register part
{NULL, NULL, 0, NULL}
};