用Python中的GTK TreeView/TreeModel同步自己的树列表

用Python中的GTK TreeView/TreeModel同步自己的树列表,python,treeview,gtk3,Python,Treeview,Gtk3,在我的应用程序中,我有一个类来管理我的树(简而言之,就像一个文件系统,其中根目录包含文件夹、包含文件夹等,还包含文件)。我现在的问题是我有重复的列表。E管理文件系统的类,另外还有TreeView/TreeModel,我必须在其中使用数据创建树。这是必需的,因为我的类比树中显示的属性有更多的方法和属性。例如,现在,当我删除一个文件时,我会更新我的内部树,并且还必须从树模型中删除该项 可以告诉TreeModel/TreeView使用我自己的类吗?当然,我认为我必须修改管理我的树的类,但我希望的是,当

在我的应用程序中,我有一个类来管理我的树(简而言之,就像一个文件系统,其中根目录包含文件夹、包含文件夹等,还包含文件)。我现在的问题是我有重复的列表。E管理文件系统的类,另外还有TreeView/TreeModel,我必须在其中使用数据创建树。这是必需的,因为我的类比树中显示的属性有更多的方法和属性。例如,现在,当我删除一个文件时,我会更新我的内部树,并且还必须从树模型中删除该项

可以告诉TreeModel/TreeView使用我自己的类吗?当然,我认为我必须修改管理我的树的类,但我希望的是,当我将文件添加到我的类中的文件夹时,它将自动添加到TreeView,这与删除它或修改其名称或属性时相同


使用Python 2.7.12、Ubuntu 16.04、Gtk3(gi.repository、glade等)

您可以让您的类实现TreeModel接口,并直接将其用作模型,而不必在两个类之间进行同步


让您的类扩展
Gtk.TreeModel
,并实现其。

我刚刚看到了关于
TreeModel
的文档,但它没有任何添加/删除元素的方法。我是否应该使用
TreeStore
(扩展
TreeModel
)并使用
append
remove
clear
等方法?如果是这样,我没有看到任何关于
TreeStore
的虚拟方法的文档,那么我该怎么做呢?如果我想过滤树呢?
TreeStore
是一个类,不是一个接口,所以它没有虚拟方法。您可能可以扩展
TreeStore
,但是如果您查看its中
remove
的实现,您将看到它在内部使用
TreeModel
的虚拟方法,如
do\u row\u deleted
。要过滤树,请使用。