Wie man Frames in Tkinter wechselt
Wir müssen in einen anderen Bereich der Tkinter-GUI wechseln, indem wir auf eine Schaltfläche klicken, und könnten dann zum Hauptteil zurückkehren, nachdem wir auf die Schaltfläche in diesem neuen Bereich geklickt haben.
Rahmen wechseln, indem der alte Rahmen zerstört und durch den neuen ersetzt wird
try:
import Tkinter as tk
except:
import tkinter as tk
class SampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switch_frame(StartPage)
def switch_frame(self, frame_class):
new_frame = frame_class(self)
if self._frame is not None:
self._frame.destroy()
self._frame = new_frame
self._frame.pack()
class StartPage(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Label(self, text="Start page", font=("Helvetica", 18, "bold")).pack(
side="top", fill="x", pady=5
)
tk.Button(
self, text="Go to page one", command=lambda: master.switch_frame(PageOne)
).pack()
tk.Button(
self, text="Go to page two", command=lambda: master.switch_frame(PageTwo)
).pack()
class PageOne(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Frame.configure(self, bg="blue")
tk.Label(self, text="Page one", font=("Helvetica", 18, "bold")).pack(
side="top", fill="x", pady=5
)
tk.Button(
self,
text="Go back to start page",
command=lambda: master.switch_frame(StartPage),
).pack()
class PageTwo(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Frame.configure(self, bg="red")
tk.Label(self, text="Page two", font=("Helvetica", 18, "bold")).pack(
side="top", fill="x", pady=5
)
tk.Button(
self,
text="Go back to start page",
command=lambda: master.switch_frame(StartPage),
).pack()
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
Die Methode switch_frame(self, frame_class)
zerstört den alten Rahmen und ersetzt dann den neuen Rahmen frame_class
.
tk.Button(self, text="Gehe zu Seite eins", command=lambda: master.switch_frame(PageOne)).pack()
übergibt das Argument frame PageOne
an den Button-Befehl switch_frame
. Es wird die Funktion swtich_frame
aufrufen, nachdem der Button angeklickt wurde.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook