3

所以我有这个 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 中插入一个假列来保留我原来的行号。但是必须有某种原生方式来实现它?)

4

1 回答 1

1

恭喜,你已经输入了 PyGTK 提供的最可怕的东西。我不希望对此有任何赏金,但我的解决方案围绕着将您的模型包装在可排序模型和可过滤模型中。这样,您可以根据需要获得 3 个嵌套模型的各种路径和迭代器。代码在这里太极端了,但是我们已经在PyGTKHelpers中对其进行了概括,以便轻松使用,或者复制用于您自己的实现。这是模块。

于 2010-09-23T12:55:50.700 回答