如何获取Tkinter TreeView选中节点的完整路径?
获取Tkinter TreeView选中节点的完整路径
我来帮你搞定这个问题!要拿到选中节点的完整路径,关键就是从当前选中的节点向上遍历所有父节点,把它们的名称拼接起来就行。
核心思路
Tkinter TreeView的每个节点都自带parent属性,我们可以从选中的节点开始,不断获取它的父节点ID,直到找到根节点(父节点ID为空字符串)。然后把收集到的节点名称倒序拼接,就能得到从根到当前节点的完整路径了。
实现代码
先写一个专门获取完整路径的函数:
def get_full_path(tree, item): path_components = [] # 循环向上遍历父节点,直到根节点 while item: # 获取当前节点的显示文本 node_name = tree.item(item)['text'] path_components.append(node_name) # 切换到父节点 item = tree.parent(item) # 倒序拼接路径(因为我们是从子节点往根节点收集的) return '\\'.join(reversed(path_components))
然后在你的选中逻辑里调用这个函数:
# 获取当前选中的节点 cur_item = tree.focus() if cur_item: full_path = get_full_path(tree, cur_item) print(full_path) # 比如输出:Folder_1\File.txt
示例说明
就拿你提到的结构来说:
- 根节点是
Folder_1 - 子节点是
File.txt
当你选中File.txt时:
- 函数先收集
File.txt,然后获取它的父节点Folder_1的ID - 收集
Folder_1,再获取它的父节点,发现是空字符串,停止循环 - 把收集到的列表
['File.txt', 'Folder_1']反转成['Folder_1', 'File.txt'] - 用反斜杠拼接,得到最终的
Folder_1\File.txt
这个方法不管嵌套多少层文件夹都能适用,比如Folder_1\Sub_Folder\File.txt这种多层结构也能正确生成路径~
内容的提问来源于stack exchange,提问作者K-Doe
相关产品推荐
相关产品推荐

