HOWTO · Tkinter
Come cambiare telaio in Tkinter
Questo tutorial introduce come passare da un telaio all'altro in Tkinter
In questa pagina
Dobbiamo spostarci in un’altra sezione dell’interfaccia grafica di Tkinter cliccando un pulsante e poi potremmo tornare alla sezione principale dopo aver cliccato il pulsante in questa nuova sezione.
Cambia telaio distruggendo il vecchio telaio e sostituendolo con il nuovo
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()
Il metodo switch_frame(self, frame_class) distrugge il vecchio frame e poi lo sostituisce con il nuovo frame frame_class.
tk.Button(self, text="Go to page one", command=lambda: master.switch_frame(PageOne)).pack() passa l’argomento frame PageOne al comando del pulsante switch_frame. Chiamerà la funzione swtich_frame dopo aver cliccato il pulsante.