|
1 | 1 | # import libraries
|
2 | | -from tkinter import* |
| 2 | +import tkinter astk |
3 | 3 | from datetime import date
|
4 | 4 |
|
5 | | -# initialized window |
6 | | -root = Tk() |
7 | | -root.geometry('280x300') |
8 | | -root.resizable(0, 0) |
9 | | -root.title('Age Calculator') |
10 | | -statement = Label(root) |
11 | | - |
12 | | -# defining the function for calculating age |
13 | | - |
14 | | - |
15 | | -def ageCalc(): |
16 | | - global statement |
17 | | - statement.destroy() |
18 | | - today = date.today() |
19 | | - birthDate = date(int(yearEntry.get()), int( |
20 | | - monthEntry.get()), int(dayEntry.get())) |
21 | | - age = today.year - birthDate.year |
22 | | - if today.month < birthDate.month or today.month == birthDate.month and today.day < birthDate.day: |
23 | | - age -= 1 |
24 | | - statement = Label(text=f"{nameValue.get()}'s age is {age}.") |
25 | | - statement.grid(row=6, column=1, pady=15) |
26 | | - |
27 | | - |
28 | | -# creating a label for person's name to display |
29 | | -l1 = Label(text="Name: ") |
30 | | -l1.grid(row=1, column=0) |
31 | | -nameValue = StringVar() |
32 | | - |
33 | | -# creating a entry box for input |
34 | | -nameEntry = Entry(root, textvariable=nameValue) |
35 | | -nameEntry.grid(row=1, column=1, padx=10, pady=10) |
36 | | - |
37 | | -# label for year in which user was born |
38 | | -l2 = Label(text="Year: ") |
39 | | -l2.grid(row=2, column=0) |
40 | | -yearValue = StringVar() |
41 | | -yearEntry = Entry(root, textvariable=yearValue) |
42 | | -yearEntry.grid(row=2, column=1, padx=10, pady=10) |
43 | | - |
44 | | -# label for month in which user was born |
45 | | -l3 = Label(text="Month: ") |
46 | | -l3.grid(row=3, column=0) |
47 | | -monthValue = StringVar() |
48 | | -monthEntry = Entry(root, textvariable=monthValue) |
49 | | -monthEntry.grid(row=3, column=1, padx=10, pady=10) |
50 | | - |
51 | | -# label for day/date on which user was born |
52 | | -l4 = Label(text="Day: ") |
53 | | -l4.grid(row=4, column=0) |
54 | | -dayValue = StringVar() |
55 | | -dayEntry = Entry(root, textvariable=dayValue) |
56 | | -dayEntry.grid(row=4, column=1, padx=10, pady=10) |
57 | | - |
58 | | -# create a button for calculating age |
59 | | -button = Button(text="Calculate age", command=ageCalc) |
60 | | -button.grid(row=5, column=1) |
61 | | - |
62 | | -# infinite loop to run program |
63 | | -root.mainloop() |
| 5 | +# GUI App class |
| 6 | +class App: |
| 7 | + def __init__(self): |
| 8 | + # initialized window |
| 9 | + self.master = tk.Tk() |
| 10 | + self.master.geometry('280x300') |
| 11 | + self.master.configure(bg="lightblue") |
| 12 | + self.master.resizable(0, 0) |
| 13 | + self.master.title('Age Calculator') |
| 14 | + self.statement = tk.Label(self.master) |
| 15 | + |
| 16 | + def run(self): |
| 17 | + # creating a label for person's name to display |
| 18 | + self.l1 = tk.Label(text="Name: ", font="courier 10", bg="lightblue") |
| 19 | + self.l1.grid(row=1, column=0) |
| 20 | + nameValue = tk.StringVar() |
| 21 | + |
| 22 | + # creating a entry box for input |
| 23 | + self.nameEntry = tk.Entry(self.master, textvariable=nameValue, relief="solid") |
| 24 | + self.nameEntry.grid(row=1, column=1, padx=10, pady=10) |
| 25 | + |
| 26 | + # label for year in which user was born |
| 27 | + self.l2 = tk.Label(text="Year: ", font="courier 10", bg="lightblue") |
| 28 | + self.l2.grid(row=2, column=0) |
| 29 | + yearValue = tk.StringVar() |
| 30 | + self.yearEntry = tk.Entry(self.master, textvariable=yearValue, relief="solid") |
| 31 | + self.yearEntry.grid(row=2, column=1, padx=10, pady=10) |
| 32 | + |
| 33 | + # label for month in which user was born |
| 34 | + self.l3 = tk.Label(text="Month: ", font="courier 10", bg="lightblue") |
| 35 | + self.l3.grid(row=3, column=0) |
| 36 | + monthValue = tk.StringVar() |
| 37 | + self.monthEntry = tk.Entry(self.master, textvariable=monthValue, relief="solid") |
| 38 | + self.monthEntry.grid(row=3, column=1, padx=10, pady=10) |
| 39 | + |
| 40 | + # label for day/date on which user was born |
| 41 | + self.l4 = tk.Label(text="Day: ", font="courier 10", bg="lightblue") |
| 42 | + self.l4.grid(row=4, column=0) |
| 43 | + dayValue = tk.StringVar() |
| 44 | + self.dayEntry = tk.Entry(self.master, textvariable=dayValue, relief="solid") |
| 45 | + self.dayEntry.grid(row=4, column=1, padx=10, pady=10) |
| 46 | + |
| 47 | + # defining the function for calculating age |
| 48 | + def ageCalc(): |
| 49 | + self.statement.destroy() |
| 50 | + today = date.today() |
| 51 | + birthDate = date(int(self.yearEntry.get()), int( |
| 52 | + self.monthEntry.get()), int(self.dayEntry.get())) |
| 53 | + age = today.year - birthDate.year |
| 54 | + if today.month < birthDate.month or today.month == birthDate.month and today.day < birthDate.day: |
| 55 | + age -= 1 |
| 56 | + self.statement = tk.Label(text=f"{nameValue.get()}'s age is {age}.", font="courier 10", bg="lightblue") |
| 57 | + self.statement.grid(row=6, column=1, pady=15) |
| 58 | + |
| 59 | + # create a button for calculating age |
| 60 | + self.button = tk.Button(text="Calculate age", font="courier 12 bold", fg="white", bg="dodgerblue", command=ageCalc) |
| 61 | + self.button.grid(row=5, column=1) |
| 62 | + |
| 63 | + # infinite loop to run program |
| 64 | + self.master.mainloop() |
| 65 | + |
| 66 | + |
| 67 | +if __name__ == '__main__': |
| 68 | + age_calc = App() |
| 69 | + age_calc.run() |
| 70 | + |
0 commit comments