代码之家  ›  专栏  ›  技术社区  ›  mario

在重设TreeView后,从.get_model()和.get_path()获取原始行号

  •  3
  • mario  · 技术社区  · 14 年前

    所以我有这个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中插入一个人造列来保留我原来的行号。但一定有某种本土的方式来实现它?)

    1 回复  |  直到 12 年前
        1
  •  2
  •   Ali Afshar    14 年前

    恭喜你,你已经进入了Pygtk必须提供的最恶梦般的事情。我不希望有任何赏金,但我的解决方案是将您的模型包装在一个可排序模型和一个可过滤模型中。这样,您可以根据需要为3个嵌套模型获取各种路径和ITER。这里的代码太过极端,但我们已经将其概括为 PyGTKHelpers 无需痛苦地使用,或为自己的实现而复制。 Here is the module.