|
1 | 1 | # import libraries
|
2 |
| -from tkinter import * |
| 2 | +import tkinter as tk |
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