如何获取/设置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
相关产品推荐
相关产品推荐

