我有以下适用于 Gtk3 Listore 的设置。
self.liststore = Gtk.ListStore(str, str, bool)
treeview = Gtk.TreeView(model=self.liststore)
renderer_text = CellRendererText()
column_text = Gtk.TreeViewColumn("Media URL", renderer_text, text=0)
treeview.append_column(column_text)
column_date = Gtk.TreeViewColumn("Date", renderer_text, text=1)
column_date.pack_start(renderer_text, True)
treeview.append_column(column_date)
renderer_toggle = Gtk.CellRendererToggle()
renderer_toggle.connect("toggled", self.on_cell_toggled)
column_toggle = Gtk.TreeViewColumn("Toggle", renderer_toggle, active=2)
treeview.append_column(column_toggle)
self.treeview = treeview
self.scrolledwindow.add(self.treeview)
我尝试添加:
column_text.set_sort_column_id(0)
self.liststore.set_sort_func(0,self.compare, None)
这会导致崩溃,但是根据此处的文档:http: //python-gtk-3-tutorial.readthedocs.org/en/latest/treeview.html应该可以工作,但是只有当我将 0 替换为self.liststore.set_sort_func(0,self.compare, None) 中的 1,我可以单击 Media 列对内容进行排序。
self.liststore.set_sort_func(1,self.compare, None)
问题:这是正确的还是奇怪的,或者文档错误,模型的索引不像文档中那样从 0 开始?
但此外,我需要帮助才能通过 Date 列进行排序。我试过添加:
column_date.set_sort_column_id(0)
self.liststore.set_sort_func(1,self.compare, None)
但这样做会因崩溃而失败。