以递归方式过滤树视图内容

时间:2010-07-01 07:34:34

标签: python user-interface gtk

我有gtk.Treeview组件的GUI应用程序。它的模型设置为gtk.Treestore,我填充了分层结构。一切都很好 - 树视图是我所期望的。

现在我想过滤叶节点以仅包含给定的字符串。我尝试像这样创建模型过滤器:

 self.modelfilter = treestore.filter_new()
 self.modelfilter.set_visible_func(self.visible_cb, self.txt)

并定义过滤函数,如下所示(self.txt是我正在过滤的文本):

 def visible_cb(self, model, iter, data):
    return self.txt.lower() in model.get_value(iter, 0).lower()

不幸的是,这种方法不是很好,因为过滤是在所有节点上完成的,而不仅仅是叶子。

GTK中是否有针对此问题的优雅解决方案?

1 个答案:

答案 0 :(得分:1)

我从未使用过该工具包,但在浏览了api文档之后......以后的工作不会有用吗?

def visible_cb(self, model, iter, data):
    return model.iter_has_child(iter) or data.lower() in model.get_value(iter, 0).lower()

不确定为什么要将self.txt传递给set_visible_func而不使用相应的data参数visible_cb