Как менять Frame в tkinter
from tkinter import *
class MyApp(Tk):
def __init__(self):
Tk.__init__(self)
self._frame = None
self.switch_frame(StartPage)
def switch_frame(self, frame_class):
if self._frame is not None:
self._frame.destroy()
self._frame = frame_class(self)
self._frame.pack()
class StartPage(Frame):
def __init__(self, master):
Frame.__init__(self, master)
Label(self, text="This is the start page").pack(side="top")
Button(self, text="Open next page",
command=lambda: master.switch_frame(NextPage)).pack()
class NextPage(Frame):
def __init__(self, master):
usertext = StringVar()
Frame.__init__(self, master)
Label(master, text="""Какой то текст""").pack(side="top", fill="x", pady=10)
Entry(master, textvariable=usertext).pack()
Button(master, text="Button", command=lambda: print(usertext.get())).pack()
Entry.grid(master, row=0, column=0)
Button.grid(master, row=0, column=1)
app = MyApp()
app.mainloop()
Данный код переносит на новую страницу, а то есть на nextpage, но при этом, в консоли постоянно выдает такую ошибку:
Traceback (most recent call last):
File "D:\python 3.8\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:/MemoryPuzzle/test2.py", line 20, in <lambda>
command=lambda: master.switch_frame(NextPage)).pack()
File "C:/MemoryPuzzle/test2.py", line 12, in switch_frame
self._frame = frame_class(self)
File "C:/MemoryPuzzle/test2.py", line 30, in __init__
Entry.grid(master, row=0, column=0)
File "D:\python 3.8\lib\tkinter\__init__.py", line 2484, in grid_configure
self.tk.call(
_tkinter.TclError: can't manage ".": it's a top-level window