Tkinter - Flowing to a different window
Since you want to display only one window at a time, you could define the various "screens" as tk.Frame
s and use the lift
method to display the right frame:
import Tkinter as tkclass Page(tk.Frame): def __init__(self, master, text, height, width, *args, **kwargs): tk.Frame.__init__(self, *args, borderwidth=20, **kwargs) self.height = height self.width = width button = tk.Button(self, text=text, font=('Comic Sans MS', 20), command=lambda: self.callback()) button.pack(side="top", fill="both", expand=True) def onlift(self): root.geometry('{}x{}'.format(self.width, self.height)) self.lift()class App(tk.Frame): def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) p1 = Page(self, 'This is page 1', height=200, width=300) p2 = Page(self, 'Next page is 2', height=400, width=300) p3 = Page(self, 'We love number 3', height=400, width=600) p1.callback = p2.onlift p2.callback = p3.onlift p3.callback = p1.onlift p1.place(x=0, y=0, relwidth=1, relheight=1) p2.place(x=0, y=0, relwidth=1, relheight=1) p3.place(x=0, y=0, relwidth=1, relheight=1) p1.onlift()root = tk.Tk()app = App(root)root.mainloop()
So in your case, you could define other subclasses of tk.Frame
, and use them in place of Page
.