python - 如何在 pyGTK 中搜索 gtk.ListStore 并删除元素?

标签 python gtk pygtk

我有以下代码(其中 store 是一个 gtk.ListStore,titer 是一个 gtk.TreeIter。文档说如果没有下一行,iter_next() 将返回 None,因此在找到时中断。它应该搜索 (int, str) 并删除 int 组件与 item_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() 不再指向下一个有效元素,而是指向 None。这意味着如果具有正确 int 值的元素位于先前删除的项目之后,则永远找不到。是否有正确的方法来搜索 gtk.ListStore 以删除项目?

最佳答案

我注意到的唯一错误是 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

关于python - 如何在 pyGTK 中搜索 gtk.ListStore 并删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426106/

相关文章:

python - 使用非唯一索引列日期在 Dask 数据框中提取最新值

python - 如何使用 Tkinter 更新图片?

python - 在 Django 之外运行 Python 脚本

python - 如何从 Python 程序中的命令行获取数据?

label - 多行 gtk.Label 忽略 xalign=0.5

gtk - 为 GTK 窗口创建形状蒙版?

linux - 无法为 Linux 构建和安装 Geary

haskell - 尝试在 Mac(小牛队)上安装 gtk 的 fatal error

rust - GtkEventBox 将信号连接到 Glade 中的 GAction

python - 我如何将 gtk 模块导入我的应用程序? Python