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