假设我有以下代码(更大类的重要内容):
self.store = Gtk.ListStore(int)
for i in range(10):
self.store.append(i)
sw = Gtk.ScrolledWindow()
sw.set_shadow_type(Gtk.ShadowType.IN)
sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
self.treeView = Gtk.TreeView(self.store)
self.create_columns(self.treeView)
sw.add(self.treeView)
def create_columns(self, treeView):
rendererText = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("Test", rendererText, text=1)
column.set_spacing(50)
column.set_fixed_width(180)
column.set_sort_column_id(1)
column.set_resizable(True)
treeView.append_column(column)
def move_item_up(self):
selection = self.treeView.get_selection()
selections, model = selection.get_selected_rows()
for row in selections:
if selection.iter_is_selected(row.iter) and row.previous:
self.store.swap(row.iter, row.previous.iter)
break
在打开窗口后,我会看到一个填充了值1-10的列。如果单击某列,则会根据值对列进行排序。如果我点击一次它从1-10点击,如果我点击两次它显示10-1。这是完美的,正是我想要的。
所以我对数组进行排序,然后我希望执行函数move-item-up
。在排序之前,此函数按预期工作,但在排序后,我收到一条错误消息,例如gtk_list_store_swap: assertion 'iter_is_valid (a, store)' failed
有没有办法让阵列再次“未分类”?
答案 0 :(得分:1)
这样的事情:
store.set_sort_column_id (Gtk.TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID,
Gtk.SORT_ASCENDING);