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

如何修复Tkinter Treeview显示Pandas DataFrame数据时的属性错误?

修复Tkinter Treeview展示Pandas DataFrame时的AttributeError错误

问题根源

报错的核心原因是这行代码的写法错误:

df_tree=ttk.Treeview(mywin,columns=df_list).pack()

pack()方法的返回值是None,因此df_tree实际被赋值为None,后续调用df_tree.column()时自然会抛出NoneType对象没有column属性的错误。另外原代码还缺少Tk类的导入,运行时会额外触发NameError。

修复方案

  1. 拆分Treeview对象的创建与布局语句:先创建Treeview实例,再单独调用pack(),确保df_tree保留对Treeview对象的引用
  2. 补充Tk类的导入

修复后的完整代码

import pandas as pd
from tkinter import Tk, ttk  # 补充导入Tk类

mywin = Tk()
mywin.geometry('300x300')

df = pd.read_csv('<filepath of csv file>')
df_list = list(df.columns.values)
df_rset = df.to_numpy().tolist()

# 拆分创建和布局操作,保留Treeview实例引用
df_tree = ttk.Treeview(mywin, columns=df_list)
df_tree.pack()

for i in df_list:
    df_tree.column(i, width=100, anchor='c')
    df_tree.heading(i, text=i)
for dt in df_rset:
    v = [r for r in dt]
    df_tree.insert('', 'end', iid=v[0], values=v)

mywin.mainloop()

额外注意事项

如果你的DataFrame第一列存在重复值,使用iid=v[0]会触发Treeview的iid唯一性错误,此时可以改用循环索引作为iid:

for idx, dt in enumerate(df_rset):
    v = [r for r in dt]
    df_tree.insert('', 'end', iid=idx, values=v)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:20:36