-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathtest_averages.py
94 lines (79 loc) · 3.61 KB
/
test_averages.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
# this program uses a GUI to get three test
# scores and display their average.
import tkinter
class TestAvg:
def __init__(self):
# open the window.
self.main_window=tkinter.Tk()
# create the five frames.
self.test1_frame = tkinter.Frame(self.main_window)
self.test2_frame = tkinter.Frame(self.main_window)
self.test3_frame = tkinter.Frame(self.main_window)
self.avg_frame = tkinter.Frame(self.main_window)
self.button_frame = tkinter.Frame(self.main_window)
# Create and pack the widgets for test 1.
self.test1_label = tkinter.Label(self.test1_frame, \
text='Enter the score for test 1:')
self.test1_entry = tkinter.Entry(self.test1_frame, \
width=10)
# packing
self.test1_label.pack(side='left')
self.test1_entry.pack(side='left')
# Create and pack the widgets for test 2.
self.test2_label = tkinter.Label(self.test2_frame, \
text='Enter the score for test 2:')
self.test2_entry = tkinter.Entry(self.test2_frame, \
width=10)
# packing
self.test2_label.pack(side='left')
self.test2_entry.pack(side='left')
# Create and pack the widgets for test 3.
self.test3_label = tkinter.Label(self.test3_frame, \
text='Enter the score for test 3:')
self.test3_entry = tkinter.Entry(self.test3_frame, \
width=10)
# packing
self.test3_label.pack(side='left')
self.test3_entry.pack(side='left')
# create and pack the widgets for the average.
self.result_label = tkinter.Label(self.avg_frame, \
text='Average:')
self.avg = tkinter.StringVar() # To update avg_label
self.avg_label = tkinter.Label(self.avg_frame, \
textvariable=self.avg)
self.result_label.pack(side='left')
self.avg_label.pack(side='left')
# create and pack the button widgets.
self.calc_button = tkinter.Button(self.button_frame, \
text='Average', \
command=self.calc_avg)
self.quit_button = tkinter.Button(self.button_frame, \
text='Quit', \
command=self.main_window.destroy)
self.calc_button.pack(side='left')
self.quit_button.pack(side='left')
# pack the frames.
self.test1_frame.pack()
self.test2_frame.pack()
self.test3_frame.pack()
self.avg_frame.pack()
self.button_frame.pack()
# start the main loop.
tkinter.mainloop()
# The calc_avg method is the callback function for
# the calc_button widget.
def calc_avg(self):
# Get the three test scores and store them
# in variables.
self.test1 = float(self.test1_entry.get())
self.test2 = float(self.test2_entry.get())
self.test3 = float(self.test3_entry.get())
# Calculate the average.
self.average = (self.test1 + self.test2 + \
self.test3) / 3.0
# Update the avg_label widget by storing
# the value of self.average in the StringVar
# object referenced by avg.
self.avg.set(self.average)
# Create an instance of the TestAvg class.
test_avg = TestAvg()