Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Tk_frame_nav.py
- import Tkinter as tk # python 2
- import tkFont as tkfont # python 2
- class SampleApp(tk.Tk):
- def __init__(self, *args, **kwargs):
- tk.Tk.__init__(self, *args, **kwargs)
- self.title_font = tkfont.Font(family='Helvetica', size=18, weight="bold", slant="italic")
- # the container is where we'll stack a bunch of frames
- # on top of each other, then the one we want visible
- # will be raised above the others
- container = tk.Frame(self)
- container.pack(side="top", fill="both", expand=True)
- container.grid_rowconfigure(0, weight=1)
- container.grid_columnconfigure(0, weight=1)
- self.frames = {}
- for F in (StartPage, PageOne, PageTwo, PageThree):
- page_name = F.__name__
- frame = F(parent=container, controller=self)
- self.frames[page_name] = frame
- # put all of the pages in the same location;
- # the one on the top of the stacking order
- # will be the one that is visible.
- frame.grid(row=0, column=0, sticky="nsew")
- self.show_frame("StartPage")
- def show_frame(self, page_name):
- '''Show a frame for the given page name'''
- frame = self.frames[page_name]
- frame.tkraise()
- class StartPage(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- self.controller = controller
- label = tk.Label(self, text="This is the start page", font=controller.title_font)
- label.pack(side="top", fill="x", padx=10, pady=10)
- button1 = tk.Button(self, text="Go to Page 1",
- command=lambda: controller.show_frame("PageOne"))
- button2 = tk.Button(self, text="Go to Page 2",
- command=lambda: controller.show_frame("PageTwo"))
- button3 = tk.Button(self, text="Go to Page 3",
- command=lambda: controller.show_frame("PageThree"))
- button1.pack()
- button2.pack()
- button3.pack()
- ypad = tk.Label(self, text="")
- ypad.pack(side="top", fill="x")
- class PageOne(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- self.controller = controller
- label = tk.Label(self, text="This is page 1", font=controller.title_font)
- label.pack(side="top", fill="x", pady=10)
- button = tk.Button(self, text="Go to the start page",
- command=lambda: controller.show_frame("StartPage"))
- button.pack()
- class PageTwo(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- self.controller = controller
- label = tk.Label(self, text="This is page 2", font=controller.title_font)
- label.pack(side="top", fill="x", pady=10)
- button = tk.Button(self, text="Go to the start page",
- command=lambda: controller.show_frame("StartPage"))
- button.pack()
- class PageThree(tk.Frame):
- def __init__(self, parent, controller):
- tk.Frame.__init__(self, parent)
- self.controller = controller
- label = tk.Label(self, text="This is page 3", font=controller.title_font)
- label.pack(side="top", fill="x", pady=10)
- button1 = tk.Button(self, text="Go to page 1",
- command=lambda: controller.show_frame("PageOne"))
- button2 = tk.Button(self, text="Go to page 2",
- command=lambda: controller.show_frame("PageTwo"))
- button1.pack()
- button2.pack()
- if __name__ == "__main__":
- app = SampleApp()
- app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement