我正在尝试做的是动态更改(通过过滤器)字符串列表。在我的情况下,它是路径存储在gtk.TreeStore
.
预期效果示例(例如 Sublime Text 2 文件搜索Ctrl+ P):
数据:
文件列表(树视图):
- '/家/用户/'
- '.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()
我知道 TreeView 有一种方法set_search_equal_func
可以将默认匹配函数更改为我自己的。问题是如何在输入过滤器表单字段时更改列表?