3

だから私はこのTreeView/TreeStoreを持っており、リストからのデータを入力します。私のアプリケーションは、上記のリストのみを参照データとして使用します。TreeStoreは、表示用に構築されたばかりです。また、TreeViewは、列ヘッダーを傾けることで再利用できます。各列の初期化に.set_sort_column_id()が使用されたためです。

問題は、次のコードが常にクリックされた行番号をディスプレイに返すことです。

# convert ListStore iter to row number
def rowno(self):
     (model, iter) = self.MY_LIST_STORE.get_selection().get_selected()
     return model.get_path(iter)[0]

それをすることになっています。元のソートされていないリストが表示されている限り、これは問題なく機能します。TreeView(およびTreeStore?)が再利用されると、表示される行番号(.get_path)は元のデータストアの行番号に対応しなくなります。

どうすればこれをマッピングできますか?または、最初に渡されたTreeViewリストのどのエントリに対応する選択されたパス番号を見つけるにはどうすればよいですか?

(もちろん、TreeStoreに偽の列を挿入して、元の行番号を保持することもできます。しかし、それを実現するための何らかのネイティブな方法が必要ですか?)

4

1 に答える 1

1

おめでとうございます、あなたはPyGTKが提供しなければならない最も悪夢のようなものを入力しました。私はこれに報奨金を期待していませんが、私の解決策は、モデルを並べ替え可能なモデルとフィルター可能なモデルでラップすることを中心に展開しています。このようにして、必要に応じて、3つのネストされたモデルのさまざまなパスと反復を取得できます。コードはここでは極端すぎますが、PyGTKHelpersで一般化して、問題なく使用したり、独自の実装用にコピーしたりしています。これがモジュールです。

于 2010-09-23T12:55:50.700 に答える