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

Tkinter点击按钮创建带Treeview标签页报错AttributeError咨询

解决Tkinter中创建Treeview时的AttributeError: 'str' object has no attribute 'tk'问题

你遇到的核心问题是给Treeview传错了父容器参数——大概率是把标签页的名称字符串当成了root(也就是master)参数传给了Treeview,但Treeview需要的是一个实实在在的Tkinter容器控件对象,比如Frame或者Notebook的标签页载体,而不是字符串。

错误原因拆解

报错AttributeError: 'str' object has no attribute 'tk'已经说得很清楚:你传入的是一个字符串,而Treeview需要的是带有.tk属性的Tkinter控件实例。比如如果你写了类似ttk.Treeview("新标签页")这种代码,就会触发这个错误,因为字符串根本没有tk属性。

修正后的完整代码示例

我帮你补全并修正了代码,核心是在按钮点击时先创建一个Frame作为标签页的容器,再把Treeview挂载到这个Frame上:

from tkinter import *
from tkinter import ttk
import math
import sys

def create_new_tab():
    # 1. 创建一个Frame作为新标签页的载体容器
    new_tab_frame = ttk.Frame(tasktabs)
    # 2. 把这个Frame添加到Notebook中,设置标签显示名称
    tasktabs.add(new_tab_frame, text="新任务标签")
    
    # 3. 创建Treeview,这里的master参数传入刚才的Frame对象,而非字符串
    tree = ttk.Treeview(new_tab_frame)
    # 配置Treeview的列和表头
    tree["columns"] = ("任务名称", "状态")
    tree.column("#0", width=80, minwidth=80)
    tree.column("任务名称", width=300, minwidth=200)
    tree.column("状态", width=150, minwidth=100)
    tree.heading("#0", text="序号")
    tree.heading("任务名称", text="任务名称")
    tree.heading("状态", text="完成状态")
    # 插入示例数据
    tree.insert("", END, text="1", values=("编写项目文档", "已完成"))
    # 让Treeview占满整个标签页容器
    tree.pack(fill=BOTH, expand=True)

myApp = Tk()
myApp.title("Program")
myApp.geometry("1000x1200")

# 初始化Notebook并布局
tasktabs = ttk.Notebook(myApp)
tasktabs.pack(fill=BOTH, expand=True, padx=10, pady=10)

# 创建触发按钮
NewWorkLab = Label(myApp, text="Name: ")
NewWorkLab.pack(side=LEFT, padx=5)
NewWorkBtn = Button(myApp, text="创建新标签页", command=create_new_tab)
NewWorkBtn.pack(side=LEFT, pady=5)

myApp.mainloop()

关键步骤说明

  • 每次点击按钮时,先创建一个ttk.Frame作为新标签页的容器,这个Frame是Tkinter的控件实例,具备Treeview需要的.tk属性。
  • 用tasktabs.add()把Frame添加到Notebook中,设置显示的标签文本。
  • 创建Treeview时,将刚才的Frame作为master参数传入,这样Treeview就明确知道要挂载到哪个容器里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:31:47