6

クラスAのオブジェクトのリストLがあります。このクラスは__str__/__repr__を実装しているため、各オブジェクトには独自の文字列表現があります(必ずしも一意である必要はありません)。pygtkにGUIがあり、列が1つしかないTreeViewウィジェットがあります。Lのオブジェクトの文字列表現を入力したいのですが、選択したアイテムを文字列ではなくオブジェクトとして取得したいと思います。TreeViewにオブジェクトのリストを保存させて、それらを刺し傷として表示する方法はありますか?そうでない場合、TreeViewで選択されているオブジェクトを知るための最良の方法は何ですか?問題は、条件によっては、TreeViewにL全体ではなく、そのサブリストを入力できるため、TreeViewのアイテムのインデックスがLのインデックスに対応しないことです。

4

3 に答える 3

6

オブジェクトを1つの列(gobject.TYPE_PYOBJECT)に格納し、文字列表現を2番目の列に格納してから、ツリービューに2番目の列のみを表示することができます。ここで行われていることと同様です:http://www.learningpython.com/2006/09/02/extending-our-pygtk-application/

于 2011-07-19T19:09:44.247 に答える
2

Gladeが3.7.0以降の場合は、ListStoreの列タイプとして「PyObject」(引用符なし)と入力できます。次に、set_cell_data_funcを使用してモデルからオブジェクトを取得し、その表現をテキストとしてCellRendererに渡します。同期する文字列列や心配するインデックスはありません。

于 2011-07-25T12:30:32.287 に答える
0

文字列が一意である場合は、辞書を使用して、文字列をキーとして使用することにより、文字列をオブジェクトにリンクできます。この場合、文字列でオブジェクトを見つけることができます。

于 2011-07-19T23:02:00.847 に答える