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
相关产品推荐
相关产品推荐

