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

Tkinter Treeview为何多出一列?如何控制其宽度与列数?

解决Tkinter Treeview额外列与宽度控制问题

嘿,我一眼就揪出问题所在啦——你看到的额外列是Treeview默认自带的**#0列**(也就是专门给树形结构留的索引列),哪怕你不需要树形功能,它也会默认显示出来。另外你代码里还有个小拼写失误,咱们一起给你搞定:

问题根源

Treeview组件天生自带一个索引为#0的列,用来展示树形层级的折叠/展开图标,哪怕你完全用不上树形结构,它也会默认占着位置,这就是你头疼的“额外列”。加上你没对这个列做隐藏处理,自然没法让组件只显示你定义的两列。

两步解决问题

  1. 把默认的#0列宽度设为0,直接隐藏它
  2. 修正代码里的拼写错误(anchor = 'centeenter'应该是anchor='center')

修正后的完整代码

from Tkinter import *
from ttk import Treeview

root = Tk()
# 初始化时直接指定columns参数,写法更简洁
tree = Treeview(root, height=10, columns=('one', 'two'))
# 关键操作:隐藏默认的#0列,stretch=NO防止它自动拉伸
tree.column('#0', width=0, stretch=NO)
# 设置自定义列的宽度
tree.column('one', width=50)
tree.column('two', width=50)
# 设置表头文本与对齐方式,修正拼写错误
tree.heading('one', text='UserName', anchor='center')
tree.heading('two', text='ID', anchor='center')
tree.grid(row=3, column=0)

root.mainloop()

额外小提示

  • 如果之后需要恢复#0列,只需要把width改回非0值,或者删掉stretch=NO就行
  • 要是想让Treeview整体宽度刚好适配两列,可以在grid布局时加上sticky='nsew',再给父容器的列设置权重,不过上面的代码已经能实现“只显示2列”的核心需求啦

内容的提问来源于stack exchange,提问作者user9175260

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:05:08