私がやろうとしているのは、文字列のリストを(フィルターを介して)動的に変更することです。私の場合、パスがに保存されているファイルのリストですgtk.TreeStore
。
期待される効果の例(例:Sublime Text 2ファイル検索Ctrl+ P):
データ:
ファイルのリスト(ツリービュー):
- '/ home / user /'
- '.bashrc'、
- 'test.txt'、
- ..。
処置:フィルタ・フィールド(入力ウィジェット)で、ユーザーは入力を開始します。最初の文字の後。't'リストは次のように更新する必要があります。
結果:
ファイルのリスト(ツリービュー):
- 'test.txt'、
- ...'t'を含むすべての文字列(マッチング関数は現在重要ではありません)
私がすでに持っているもの:
self.search_entry = gtk.Entry()
self.tree_store = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)
for node, files in self.files_list:
parent = self.tree_store.append(None, [node, True])
for f in files:
self.tree_store.append(parent, [f, True])
tree_filter = self.tree_store.filter_new()
self.treeview = gtk.TreeView(tree_filter)
self.renderer0 = gtk.CellRendererText()
self.treeview.insert_column_with_attributes(-1, "Filename", self.renderer0, text=0)
self.treeview.set_search_column(0)
self.treeview.set_search_entry(self.search_entry)
self.treeview.expand_all()
set_search_equal_func
TreeViewには、デフォルトのマッチング関数を自分のものに変更できるメソッドがあることを知っています。問題は、フィルターフォームフィールドに入力するときにリストを変更するにはどうすればよいですか?