我正在使用Glade和Gtk构建应用程序。
我有一个树状视图。在Glade中,我配置了此树视图,以便其模型为名为liststore的GtkListstore。 该列表存储具有两列类型为gcharray的列。
我使用pyinotify检测何时插入和插入USB媒体。当插入某些东西时,发生了什么事:
self.liststore.append() # empty row
for value1 in some_list:
row_shape = [value2,value1]
self.liststore.append(row_shape)
基本上,我只是将几行添加到列表存储中。效果很好。
插入USB介质后,应该发生以下情况:
current_iter = self.liststore.get_iter_first()
delete_items = list()
while current_iter:
if self.liststore[current_iter][0] == some_value
delete_items.append(current_iter)
current_iter = self.liststore.iter_next(current_iter)
for i in delete_items:
self.liststore.remove(i)
当代码到达删除部分时,出现黑屏,并显示一条错误消息:
GTK关键**:gtktreeview.c:6908(do_validate_rows):断言`gtk_tree_model_iter_next(tree_view_> priv-> model,&iter)'失败。 GtkTreeView的内部视图和GtkTreeModel之间存在差异。通常,这意味着模型已更改而没有告知视图。从现在开始的任何显示都可能不正确。
我的删除过程出了什么问题?
编辑:
当我想删除第一个列表存储区时,我通过设置一个新的列表存储部分解决了该问题。我的屏幕没有变黑,但仍然出现错误:
GTK关键**:gtk_list_store_get_value:断言'column
n_columns'失败