使用Python TreeView控件时如何获取点击选中行的索引
Tkinter TreeView获取选中行索引的正确实现
你输出的I003、I004这类值是TreeView为每个行项自动生成的内部唯一ID,不是行顺序索引,不建议直接提取ID末尾的数字转换为索引:如果后续有行插入、删除、排序操作,内部ID会持续递增不会复用或重置,提取的数字会和实际行的位置完全不匹配。
另外你当前的代码还有一个隐藏问题:事件绑定的回调函数会默认传入事件对象参数,你定义的selectItem没有预留参数位置,运行时会触发参数不匹配报错。
修正后的实现代码
# 绑定逻辑保持不变 self.tree_view_test.bind('<ButtonRelease-1>', self.selectItem) def selectItem(self, event): # 新增event参数接收事件对象 # 先判断是否有选中项,避免点击TreeView空白区域时报错 if not self.tree_view_test.selection(): return item_id = self.tree_view_test.selection()[0] # 调用TreeView内置的index方法获取0起始的行索引 row_index = self.tree_view_test.index(item_id) print(row_index)
补充说明
index()方法返回的是当前TreeView展示顺序下的0起始整数索引,会跟随行的增删、排序操作自动更新,是获取行索引的官方标准实现。- 如果你需要关联的是数据在原始数据源中的索引,建议在插入行到TreeView时,把原始索引存到行的
tags属性或者values的隐藏字段中,需要时直接读取对应字段即可,不需要依赖界面的展示索引。
内容的提问来源于stack exchange,提问作者crackao123
相关产品推荐
相关产品推荐

