Полянка: несоответствие при попытке удалить строку из списка - PullRequest
0 голосов
/ 15 февраля 2019

Я создаю приложение, используя Glade и Gtk.

У меня есть дерево.В Glade я настроил это древовидное представление так, чтобы его моделью был GtkListstore с именем liststore.В этом хранилище списков есть два столбца типа 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-CRITICAL **: gtktreeview.c: 6908 (do_validate_rows): утверждение `gtk_tree_model_iter_next (tree_view_> priv-> model, & iter) 'не выполнено.Существует несоответствие между внутренним представлением GtkTreeView и GtkTreeModel.Как правило, это означает, что модель изменилась, не сообщая представлению.Любое отображение с этого момента, вероятно, будет неправильным.

Что не так в моем процессе удаления?

РЕДАКТИРОВАТЬ:

Я частично решил проблему, установив новое хранилище списков, когда я хочу стереть первое.Мой экран больше не становится черным, но я все еще получаю сообщение об ошибке:

Gtk-CRITICAL **: gtk_list_store_get_value: утверждение 'column n_columns' не удалось

...