调用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
相关产品推荐
相关产品推荐

