代码之家  ›  专栏  ›  技术社区  ›  Macha

如何在pygtk中搜索gtk.liststore并删除元素?

  •  2
  • Macha  · 技术社区  · 14 年前

    我有以下代码(商店是 gtk.ListStore 滴度是 gtk.TreeIter . 医生说如果没有下一行, iter_next() 将返回 None 因此,当找到它时就中断了。它应该搜索 ListStore 属于 (int, str) 移除其中一项 int 组件与项目\u id匹配。

        while True:
            if store.get_path(titer)[0] == item_id:
                store.remove(titer)
                break
            else:
                titer = store.iter_next(titer)
                if titer is None:
                    break
    

    但是,如果中间的元素以前已被删除,而不是 titer.iter_next() 指向下一个有效元素,它指向无。这意味着如果元素 int 值位于以前删除的项之后,永远找不到该值。有没有正确的搜索方法 GTK.ListSturn 删除项目?

    1 回复  |  直到 14 年前
        1
  •  9
  •   Johannes Sasongko    14 年前

    我注意到的唯一错误是 store.get_path(titer)[0] ,这将得到列表模型的行号。应该是 store.get_value(titer, 0) .

    顺便说一下,您的代码可以用一种更简单的样式来表示(仅限PYGTK) TreeModelRow :

    for row in store:
        if row[0] == item_id:
            store.remove(row.iter)
            break