如何使用我自己的模型核心化gtk.ListStore项目

问题描述:

我有一个项目对象的列表,我在GtkTreeView中显示。我试图在用户双击TreeView中的项目行时打开一个包含项目详细信息的对话框。如何使用我自己的模型核心化gtk.ListStore项目

现在,我通过get_selection()从TreeView(它是项目的名称)中获取选定的值,然后在我自己的列表中通过名称搜索该项目,以使用我自己的模型来选择该项目。

但是,这并不完全正确(此外,它假定项目的名称是唯一的),我想知道是否有更好的方法来做到这一点。

我最终做的是扩展gtk.ListStore并使用我的自定义列表。我还劫持了append()方法,以便它不仅会将[str,str等]追加到ListStore中,而且还将扩展ListStore的类的自定义列表属性中的实际模型。

然后,当用户双击该行时,我通过ListStore中的行索引获取请求的模型,该索引对应于自定义列表中的模型索引。

不适用于默认型号。您可以尝试使用专门编写的Py-gtktree models在后端和演示文稿中使用相同的对象。

顺便说一句,它的文档概述了使用标准模型(即不使用Py-gtktree)的替代方法,但我不会称它为优雅。