Зарегистрируйте нестатический метод с помощью PyMethodDef

Я ищу способ регистрации нестатических методов моего класса MyWidget в качестве методов Python.

Класс MyWidget является классом QWidget и находится в главном окне. Поэтому я хочу инициализировать python при запуске приложения, а затем получить информацию из MyTableWidget (QTableWidget) в классе MyWidget. Мне нравится регистрировать нестатический метод itemCount как метод python. Я не мог этого сделать, так как при регистрации нестатического объекта выдается ошибка в myPythonCommands ниже.

Я проверил boost::python, но не смог найти способ сделать это. Это обложка документа для создания класса Python в C++, но не его, насколько я знаю.

Мне было интересно, если кто-нибудь из вас знает способ и указать мне правильное направление?

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}
                                        };

0 ответов

Другие вопросы по тегам