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