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

如何在Python Tkinter中修改Treeview表格的列数及内容?

解决Tkinter Treeview修改列数和内容的问题

你的代码核心问题是:点击按钮时仅重新创建了Treeview对象,但旧表格未被销毁,新表格也未执行布局显示,导致界面无变化。以下是修复后的代码:

import tkinter as tk
from tkinter import ttk

window = tk.Tk()
colName = ['B','C']

def change_table():
    global table       
    # 销毁旧的Treeview
    table.destroy()
    new_colName = ['A'] + colName
    # 创建新的3列Treeview
    table = ttk.Treeview(window, columns=('0','1','2'), show='headings')
    for i in range(len(new_colName)):
        table.heading(i, text=new_colName[i])
        # 可选:设置列宽,优化显示
        table.column(i, width=80)
    # 插入对应3列的新数据
    new_data = [10, 20, 30]
    table.insert(parent='', index=0, iid=0, value=new_data)
    # 布局显示新表格
    table.pack()

button = ttk.Button(window, text="切换为三列", command=change_table)
button.pack()

# 初始化两列表格
table = ttk.Treeview(window, columns=('0','1'), show='headings')
for i in range(len(colName)):
    table.heading(i, text=colName[i])
    table.column(i, width=80)
data = [20,30]
table.insert(parent='', index=0, iid=0, value=data) 
table.pack()

window.mainloop()

关键改动说明:

  • 销毁旧表格:调用table.destroy()彻底移除界面上的旧Treeview,避免新旧控件重叠
  • 显示新表格:新Treeview创建后执行table.pack(),使其在界面上渲染
  • 适配新列数据:插入对应列数的数据,保证内容和列数匹配
  • 可选添加table.column()设置列宽,提升显示效果

点击按钮后,原两列表格会被替换为包含A、B、C三列的新表格,数据也同步更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:42:41