如何在Glade的预创建列表框中设置listStore模型?

时间:2015-11-02 04:16:10

标签: python gtk gtk3 glade

显然,在GTKListBox or Treeview中拥有项目的“正确”方法是在构造函数中使用listStore模型构建。如果我想使用Glade GUI项目,其中已经创建了一个列表框并由builder.get_object("appsDocumentListBox")引用了该怎么办?

我可以在Gtk.builder创建窗口后设置模型,还是有更好的方法来做到这一点?

我也想知道使用ListStore与手动添加row = Gtk.ListBoxRow(),添加内容和设置ListBox.add(row)的性能改进是什么? (它可以在Glade-builder Python窗口中运行)

与Treeview不同,显然Listbox不会在构造函数之后设置模型吗?

>>> l = Gtk.ListBox()
>>> l.set_model
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'ListBox' object has no attribute 'set_model'

1 个答案:

答案 0 :(得分:2)

你混合了两件事。您可以创建GtkListBox并向其添加GtkListBoxRow。这里不需要额外的模型。

还有GtkListStoreGtkTreeStore。他们都使用GtkTreeView。 ListStore具有平面层次结构,TreeStore可以嵌套。 GtkTreeView具有set_model功能,因此您可以在创建模型后设置模型。您也可以直接在Glade中创建相应的模型。

如果您要添加复杂的小部件,GtkListBox更适合。对于大量应该排序或分层结构的数据,我宁愿使用GtkTreeView和相应的模型。