gpt4 book ai didi

python - Python Gtk+3 中的排序和过滤树模型..?

转载 作者:太空狗 更新时间:2023-10-29 22:27:21 26 4
gpt4 key购买 nike

我正在尝试获得一个可以过滤和排序的树模型(实际上是一个列表存储)。我有以下一段代码

self.modelfilter = self.liststore.filter_new()
self.modelfilter.set_visible_func(\
self._visible_filter_function)
self.treeview.set_model(self.modelfilter)

其中 self.liststoreself.treeview 是标准的 Gtk.ListStoreGtk.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

表示树模型不可排序。

按照建议,这个问题在 PyGtk 中似乎是可以克服的 here .这个想法是将一个 ListStore、一个 TreeModelFilter 和一个 TreeSortFilter 一个堆叠在另一个内部,并将最后一个作为 treeview 的模型。

但是这个技巧似乎在 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 中显示的过滤和可排序的树模型对象?

最佳答案

>>> from gi.repository import Gtk
>>> mymodel = Gtk.ListStore()
>>> Gtk.TreeModelSort(model=mymodel)
<TreeModelSort object at 0x1d4d190 (GtkTreeModelSort at 0x1f0d3f0)>

在我看来 PyGObject 还没有准备好。它没有可浏览的文档,有些东西还没有内省(introspection),特别是这个:

  • 有时小部件与 Gtk.MyWidget(attr=foo) 一起工作,就像这个一样。
  • 有时使用 Gtk.MyWidget.new_with_label('Foo'),比如按钮。是的,Gtk.MyWidget(label='Foo') 不起作用。

亲切的问候

关于python - Python Gtk+3 中的排序和过滤树模型..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com