如何通过代码调整tkinter ttk Treeview展开列的宽度?
调整Tkinter Treeview左侧展开/收起列的宽度
在使用Tkinter的ttk Treeview创建带子项的树形结构时,最左侧会自动生成一列,用于显示展开/收起父项的控件。这一列可手动拖拽调整宽度,但很多人不知道如何通过代码直接设置它的宽度。
问题示例代码
# Standard Library import tkinter as tk from tkinter import ttk root = tk.Tk() # creating treeview columns = ('Category', 'Parameter', 'Value', 'Unit', 'Status') tree = ttk.Treeview(root, columns=columns) tree.pack(side='left') tree.column('Category', minwidth=0, width=110, stretch=True) tree.column('Parameter', minwidth=0, width=150, stretch=True) tree.column('Value', minwidth=0, width=110, stretch=True) tree.column('Unit', minwidth=0, width=110, stretch=True) tree.column('Status', minwidth=0, width=110, stretch=True) tree.heading('Category', text='Category') tree.heading('Parameter', text='Parameter') tree.heading('Value', text='Value') tree.heading('Unit', text='Unit') tree.heading('Status', text='Status') info = ("one", "two", "three", "four", "five") tree.insert("", tk.END, iid=1, values=info, open=False) tree.insert("", tk.END, iid=2, values=info, open=False) tree.move(2, 1, 0) root.title("Test File Editor") root.geometry("850x700") root.mainloop()
解决方案
Treeview中这一列的列标识符是空字符串'',你可以直接用tree.column()方法对它进行设置,操作逻辑和自定义列一致。
比如要把这一列宽度设为20,同时禁止拉伸、设置最小宽度为0,添加以下代码即可:
tree.column('', width=20, minwidth=0, stretch=False)
修改后的完整代码
# Standard Library import tkinter as tk from tkinter import ttk root = tk.Tk() # creating treeview columns = ('Category', 'Parameter', 'Value', 'Unit', 'Status') tree = ttk.Treeview(root, columns=columns) tree.pack(side='left') # 设置左侧展开列的宽度 tree.column('', width=20, minwidth=0, stretch=False) tree.column('Category', minwidth=0, width=110, stretch=True) tree.column('Parameter', minwidth=0, width=150, stretch=True) tree.column('Value', minwidth=0, width=110, stretch=True) tree.column('Unit', minwidth=0, width=110, stretch=True) tree.column('Status', minwidth=0, width=110, stretch=True) tree.heading('Category', text='Category') tree.heading('Parameter', text='Parameter') tree.heading('Value', text='Value') tree.heading('Unit', text='Unit') tree.heading('Status', text='Status') info = ("one", "two", "three", "four", "five") tree.insert("", tk.END, iid=1, values=info, open=False) tree.insert("", tk.END, iid=2, values=info, open=False) tree.move(2, 1, 0) root.title("Test File Editor") root.geometry("850x700") root.mainloop()
运行修改后的代码,左侧的展开列会直接显示为你设置的宽度,无需手动拖拽调整。
内容的提问来源于stack exchange,提问作者Eli Weitzman
相关产品推荐
相关产品推荐

