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