我有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中是否有针对此问题的优雅解决方案?
答案 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
。