You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取/设置GTK4中ColumnView的选中项?

用Gtk.ColumnView实现选中项的获取与设置

你创建的sel(即Gtk.MultiSelection实例)就是所需的Gtk.SelectionModel,不需要额外获取。以下是对应原TreeView功能的实现代码:

获取选中项

直接通过Gtk.MultiSelection的API遍历选中位置,获取对应条目:

# 获取选中项
selected_items = []
for pos in sel.get_selected_rows():
    item = sel.get_item(pos)
    selected_items.append(item)

print(selected_items)

更简洁的写法:

selected_items = [sel.get_item(pos) for pos in sel.get_selected_rows()]

设置选中项

使用select_item()和unselect_item()方法,结合条件判断完成选中状态设置:

方式1:先清空再选择

# 清空所有现有选中
sel.unselect_all()

# 遍历列表所有条目,按条件选中
for i in range(store.get_n_items()):
    item = store.get_item(i)
    if <你的判断函数>(item):
        # False表示不追加到现有选中(已清空,不影响)
        sel.select_item(i, False)

方式2:保留原有选中,逐个判断更新

for i in range(store.get_n_items()):
    item = store.get_item(i)
    if <你的判断函数>(item):
        sel.select_item(i, True)
    else:
        sel.unselect_item(i)

额外说明

  • 若后续需要从ColumnView中获取SelectionModel,调用view.get_model()即可返回你设置的Gtk.MultiSelection实例。
  • 如果你需要树形结构(对应原Gtk.TreeStore),需用Gtk.TreeListModel包装数据模型后,再传入Gtk.MultiSelection。

内容的提问来源于stack exchange,提问作者mi4code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:30:23