notebook.add() returns 错误 window 路径名
notebook.add() returns bad window path name
我正在尝试让一个 ttk 笔记本根据 2 类 显示 2 个标签,代码如下:
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)
self.notebook.add(self.options)
self.notebook.add(self.dashboard)
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()
但是,当我 运行 出现此错误时(仅当我尝试使用 ttk.Notebook 的“添加”方法时才会发生):_tkinter.TclError: bad window path name "<__main__.Options object at 0x0000016E51653DC0>"
我不明白为什么我的语法错误,有人可以帮我解决这个问题吗?
非常感谢!!
子窗格小部件通常是一个 Frame
或子class。我不确定你在做什么,但你可以通过从 tkinter Frame
class 像这样:
import tkinter as tk
from tkinter import ttk
class Dashboard(tk.Frame):
def __init__(self,master):
super().__init__(master)
self.frame = tk.Frame(self.master, width=400, height=400, bg="red")
self.frame.pack(expand=True)
class Options(tk.Frame):
def __init__(self,master):
super().__init__(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)
self.notebook.add(self.options)
self.notebook.add(self.dashboard)
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()
我正在尝试让一个 ttk 笔记本根据 2 类 显示 2 个标签,代码如下:
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)
self.notebook.add(self.options)
self.notebook.add(self.dashboard)
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()
但是,当我 运行 出现此错误时(仅当我尝试使用 ttk.Notebook 的“添加”方法时才会发生):_tkinter.TclError: bad window path name "<__main__.Options object at 0x0000016E51653DC0>"
我不明白为什么我的语法错误,有人可以帮我解决这个问题吗? 非常感谢!!
子窗格小部件通常是一个 Frame
或子class。我不确定你在做什么,但你可以通过从 tkinter Frame
class 像这样:
import tkinter as tk
from tkinter import ttk
class Dashboard(tk.Frame):
def __init__(self,master):
super().__init__(master)
self.frame = tk.Frame(self.master, width=400, height=400, bg="red")
self.frame.pack(expand=True)
class Options(tk.Frame):
def __init__(self,master):
super().__init__(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)
self.notebook.add(self.options)
self.notebook.add(self.dashboard)
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()