wxPython で書かれた GUI があります (boa コンストラクターを使用)。ユーザーのセッションをファイルに保存して、次回のアプリケーション起動時にロードしたいと考えています。コントロールを繰り返し処理し、それらの値を辞書に保存することで、各値を「手動で」保存することを避けたいと思います。
アプリケーションで使用されているすべての wxID とそれに対応するウィジェットを取得する方法はありますか?
wxPython で書かれた GUI があります (boa コンストラクターを使用)。ユーザーのセッションをファイルに保存して、次回のアプリケーション起動時にロードしたいと考えています。コントロールを繰り返し処理し、それらの値を辞書に保存することで、各値を「手動で」保存することを避けたいと思います。
アプリケーションで使用されているすべての wxID とそれに対応するウィジェットを取得する方法はありますか?
ID はまったく必要ありません。最上位のウィンドウから開始し、wxWindow::GetChildren()メソッドを使用してすべての子を再帰的に列挙するだけです。次に、それぞれの子に対して、そのタイプを動的に決定し (いくつかのタイプのコントロールのみを使用する場合は、これは簡単です)、その値を保存する必要があります。コントロールを作成するときに、コントロールの名前(ラベルではなく)を指定して、数値 ID よりも便利な一意の識別子を指定すると便利な場合もあります。
wx.lib.agw の PersistenceManager メカニズムを見てみましょう。元のドキュメントは次のとおりです。http://xoomer.virgilio.it/infinity77/AGW_Docs/persist.persistencemanager.PersistenceManager.html
そして、ここに新しいドキュメントがあります:
または、フレームまたはパネルの GetChildren() メソッドを使用してすべてのウィジェットを取得し、それらから値を取得することもできますが、PersistenceManager の方が理にかなっていると思います。