我试图获得可以过滤和排序也TreeModel中(实际上是一个liststore)。 我有下面的代码段
self.modelfilter = self.liststore.filter_new()
self.modelfilter.set_visible_func(\
self._visible_filter_function)
self.treeview.set_model(self.modelfilter)
其中self.liststore
和self.treeview
是标准Gtk.ListStore
和Gtk.TreeView
,我从一个林间空地文件中获取对象, self._visible_filter_function
是一个过滤功能。
问题是, self.modelfilter
似乎并不可排序的。 当我(在列的列标题,单击self.treeview
)对它们进行排序,我得到
Gtk-CRITICAL **: gtk_tree_sortable_get_sort_column_id: assertion `GTK_IS_TREE_SORTABLE (sortable)' failed
说的TreeModel不可排序。
这个问题似乎可以克服在PyGTK中的建议在这里 。 我们的想法是一个堆栈ListStore,一个TreeModelFilter和TreeSortFilter一个在另一个内部和饲料的最后一个的模型树视图。
然而这一招似乎并不在Python GTK + 3合作。 当我尝试
self.modelfilter = self.liststore.filter_new()
self.modelfilter.set_visible_func(\
self._visible_filter_function)
self.sorted_and_filtered_model = \
Gtk.TreeModelSort(self.modelfilter)
self.treeview.set_model(self.sorted_and_filtered_model)
它抱怨
Gtk.TreeModelSort(self.modelfilter)
TypeError: GObject.__init__() takes exactly 0 arguments (1 given)
现在,我试图让一个实例Gtk.TreeModelSort
不带任何参数。 但是,这种情况下没有任何set_model
方法。
我在这里丢失。
有另一种方式来设置模式Gtk.TreeModelSort
? 还是有可显示在一个TreeView得到过滤一个完全不同的方式和排序TreeModel的对象?