-
Notifications
You must be signed in to change notification settings - Fork 0
/
test2.py
132 lines (93 loc) · 3.25 KB
/
test2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import tkinter as tk
from tkinter import ttk
LARGEFONT = ("Verdana", 35)
class tkinterApp(tk.Tk):
# __init__ function for class tkinterApp
def __init__(self, *args, **kwargs):
# __init__ function for class Tk
tk.Tk.__init__(self, *args, **kwargs)
# creating a container
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
# initializing frames to an empty array
self.frames = {}
# iterating through a tuple consisting
# of the different page layouts
for F in (StartPage, Page1, Page2):
frame = F(container, self)
# initializing frame of that object from
# startpage, page1, page2 respectively with
# for loop
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
# to display the current frame passed as
# parameter
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
# first window frame startpage
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
# label of frame Layout 2
label = ttk.Label(self, text="Startpage", font=LARGEFONT)
# putting the grid in its place by using
# grid
label.grid(row=0, column=4, padx=10, pady=10)
button1 = ttk.Button(self, text="Page 1",
command=lambda: controller.show_frame(Page1))
# putting the button in its place by
# using grid
button1.grid(row=1, column=1, padx=10, pady=10)
## button to show frame 2 with text layout2
button2 = ttk.Button(self, text="Page 2",
command=lambda: controller.show_frame(Page2))
# putting the button in its place by
# using grid
button2.grid(row=2, column=1, padx=10, pady=10)
# second window frame page1
class Page1(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = ttk.Label(self, text="Page 1", font=LARGEFONT)
label.grid(row=0, column=4, padx=10, pady=10)
# button to show frame 2 with text
# layout2
button1 = ttk.Button(self, text="StartPage",
command=lambda: controller.show_frame(StartPage))
# putting the button in its place
# by using grid
button1.grid(row=1, column=1, padx=10, pady=10)
# button to show frame 2 with text
# layout2
button2 = ttk.Button(self, text="Page 2",
command=lambda: controller.show_frame(Page2))
# putting the button in its place by
# using grid
button2.grid(row=2, column=1, padx=10, pady=10)
# third window frame page2
class Page2(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = ttk.Label(self, text="Page 2", font=LARGEFONT)
label.grid(row=0, column=4, padx=10, pady=10)
# button to show frame 2 with text
# layout2
button1 = ttk.Button(self, text="Page 1",
command=lambda: controller.show_frame(Page1))
# putting the button in its place by
# using grid
button1.grid(row=1, column=1, padx=10, pady=10)
# button to show frame 3 with text
# layout3
button2 = ttk.Button(self, text="Startpage",
command=lambda: controller.show_frame(StartPage))
# putting the button in its place by
# using grid
button2.grid(row=2, column=1, padx=10, pady=10)
# Driver Code
app = tkinterApp()
app.mainloop()