Python Tkinter删除TreeView行后如何重新排序序号列
TreeView 问题解决方案
一、删除行后序号列自动连续更新
删除选中行后,遍历所有剩余条目,重新设置序号列的值即可实现连续排序:
# 执行删除操作 selected_items = pin_position_tree.selection() for item in selected_items: pin_position_tree.delete(item) # 遍历所有行,更新序号 for idx, item_id in enumerate(pin_position_tree.get_children(), start=1): # 替换成你的序号列对应的列名(比如"num") pin_position_tree.set(item_id, column="num", value=str(idx))
注意替换代码中column="num"为你实际定义的序号列名称,确保和TreeView初始化时的columns参数对应。
二、pin_position_tree.index(selected_position) 的替代实现
如果需要获取选中项在同级节点中的位置,可以通过get_children获取子项列表后用列表的index方法实现,效果与原方法一致:
# 获取选中项的父节点(根节点的父节点为空字符串) parent_node = pin_position_tree.parent(selected_position) # 获取父节点下的所有子项 sibling_items = pin_position_tree.get_children(parent_node) # 计算选中项的位置 position = sibling_items.index(selected_position)
这种方式兼容性更强,避免某些TreeView结构下index方法可能出现的异常。
内容的提问来源于stack exchange,提问作者전영진
相关产品推荐
相关产品推荐

