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

Tkinter Treeview子节点未自动缩进问题求助

Tkinter Treeview子节点未自动缩进问题求助

哈哈,我一眼就瞅到问题出在哪啦!这完全是你把Treeview的列用错地方啦😆

问题根源

Treeview自带的层级缩进是专门在默认的#0列(也就是「树结构列」)里实现的,但你现在把所有要显示的文本都塞到了自定义的ddm列中,而且子节点的text参数还设成了空字符串——这就相当于把负责展示层级缩进的#0列给闲置了,自然不会自动缩进啦!

你看你插入子节点的代码:

filterTree.insert(parent = 'Room List', index = 'end', iid = record, text = "", values = ("    " + record,))

这里的text参数是给#0列的内容,values才是给ddm列的内容。#0列本来就是用来展示树的层级箭头、缩进空白的,你把它留空,可不就得手动加空格凑缩进嘛!

解决办法

把要显示的节点文本放到text参数里,让#0列发挥它的层级作用,Treeview就会自动帮你处理子节点缩进了!

修改后的核心代码如下:

# 插入父节点时,把文本放到text参数(对应#0列)
filterTree.insert(parent = '', index = 'end', iid = "Room List", text = 'Room List', values = ('Room List',))

# 插入子节点时,把显示文本放到text参数,values按需设置即可
for record in netBr:
    if record == 'eof':
        break
    filterTree.insert(parent = 'Room List', index = 'end', iid = record, text = record, values = (record,))

你之前设置的#0列宽度40刚好能放下层级箭头和缩进空白,完全不用改。现在再运行代码,子节点就会乖乖自动缩进啦,再也不用手动加空格啦!

小补充

如果你确实需要在ddm列展示内容,也可以调整Treeview的show参数或列配置,但最贴合Treeview设计初衷的方式,还是用#0列承载树的层级结构哦😉


备注:内容来源于stack exchange,提问作者Demian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:23:04