Hoe Frames schakelen in Tkinter

We moeten naar een ander gedeelte van de grafische gebruikersinterface van Tkinter gaan door op een knop te klikken en kunnen vervolgens terugkeren naar het hoofdgedeelte nadat we op de knop in dit nieuwe gedeelte hebben geklikt.
Wissel van frame door het oude frame te vernietigen en door het nieuwe te vervangen
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()
switch_frame(self, frame_class)
methode vernietigt het oude frame en vervangt het door het nieuwe frame frame_class
.
tk.Button(self, text="Go to page one", command=lambda: master.switch_frame(PageOne)).pack()
passeert het argument kader PageOne
van de opdracht knop switch_frame
. Het roept de swtich_frame
functie aan nadat op de knop is geklikt.
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