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

调用ttk.Notebook的add方法报bad window path name错误如何解决

报错根因

ttk.Notebook.add() 方法要求传入的参数是Tkinter 原生控件对象,但你代码中传入的是自定义的 Options、Dashboard 类的实例,这两个类不属于Tkinter控件子类,自然会触发窗口路径不识别的报错。你只需要传入两个自定义类内部封装的frame属性(也就是实际的tk.Frame控件实例)即可。

修复后可运行代码

import tkinter as tk
from tkinter import ttk


class Dashboard:
    def __init__(self,master):
        self.master = master
        self.frame = tk.Frame(self.master, width = 400, height = 400, bg = "red")
        self.frame.pack(expand = True)
class Options :
    def __init__(self,master):
        self.master = master
        self.frame = tk.Frame(self.master, width = 400, height = 400, bg = "blue")
        self.frame.pack(expand = True)
class Tabs:
    def __init__(self,master):
        self.master = master
        self.notebook = ttk.Notebook(self.master)
        self.options = Options(self.notebook)
        self.dashboard = Dashboard(self.notebook)
        # 仅修改此处:传入自定义类内部的frame控件,text参数为标签页显示名称可按需修改
        self.notebook.add(self.options.frame, text="选项")
        self.notebook.add(self.dashboard.frame, text="仪表盘")
        self.notebook.pack(pady=10, expand=True)


class MainGUI:
    def __init__(self,master):
        self.master = master
        self.tabs = Tabs(self.master)


if __name__ == '__main__':
    root = tk.Tk()
    gui = MainGUI(root)
    root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:54:04