I have code that opens a window and has three buttons for pages 1, 2, and 3. However, I also have four .py files (Dashboard, PageOne, PageTwo. PageThree). The toolbar will be the file that was used to launch the application. I want the code from each file to be launched / displayed only when the user clicks the corresponding button on the page.
Dashboard.py:
import Tkinter as tk import PageOne import PageTwo import PageThree class Page(tk.Frame): def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) def show(self): self.lift() class MainView(tk.Frame): def __init__(self, *args, **kwargs): tk.Frame.__init__(self, *args, **kwargs) p1 = Page1(self) p2 = Page2(self) p3 = Page3(self) buttonframe = tk.Frame(self) container = tk.Frame(self) buttonframe.pack(side="top", fill="x", expand=False) container.pack(side="top", fill="both", expand=True) p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1) p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1) p3.place(in_=container, x=0, y=0, relwidth=1, relheight=1) b1 = tk.Button(buttonframe, text="Page 1", command=p1.lift) b2 = tk.Button(buttonframe, text="Page 2", command=p2.lift) b3 = tk.Button(buttonframe, text="Page 3", command=p3.lift) b1.pack(side="left") b2.pack(side="left") b3.pack(side="left") p1.show() if __name__ == "__main__": root = tk.Tk() main = MainView(root) main.pack(side="top", fill="both", expand=True) root.wm_geometry("400x400") root.mainloop()
PageOne.py:
import Tkinter as tk import Dashboard class Page1(Page): def __init__(self, *args, **kwargs): Page.__init__(self, *args, **kwargs) label = tk.Label(self, text="This is page 1") label.pack(side="top", fill="both", expand=True)
PageTwo.py
import Tkinter as tk import Dashboard class Page2(Page): def __init__(self, *args, **kwargs): Page.__init__(self, *args, **kwargs) label = tk.Label(self, text="This is page 2") label.pack(side="top", fill="both", expand=True)
PageThree.py:
import Tkinter as tk import Dashboard class Page3(Page): def __init__(self, *args, **kwargs): Page.__init__(self, *args, **kwargs) label = tk.Label(self, text="This is page 3") label.pack(side="top", fill="both", expand=True)
EDIT:
The error I get is:
Traceback (most recent call last): File "C:\Users\ross.watson\Google Drive\Smart Mirror\Test\Dashboard.py", line 2, in <module> import PageOne File "C:\Users\ross.watson\Google Drive\Smart Mirror\Test\PageOne.py", line 2, in <module> import Dashboard File "C:\Users\ross.watson\Google Drive\Smart Mirror\Test\Dashboard.py", line 3, in <module> import PageTwo File "C:\Users\ross.watson\Google Drive\Smart Mirror\Test\PageTwo.py", line 4, in <module> class Page2(Page): NameError: name 'Page' is not defined