3

我正在寻找一种将 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}
                                        };
4

0 回答 0