-
Notifications
You must be signed in to change notification settings - Fork 0
/
marketapp2.py
67 lines (59 loc) · 2.77 KB
/
marketapp2.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
"""
File: marketapp2.py
Author: Ken Lambert
Editor: Leigh Stauffer
Project 7
GUI-based simulation of a supermarket checkout process.
"""
from breezypythongui import EasyFrame
from marketmodel import MarketModel
class MarketView(EasyFrame):
"""View of the simulation."""
def __init__(self):
"""Sets up the window and widgets."""
EasyFrame.__init__(self, "Market Simulator")
self.addLabel(text = "Total running time",
row = 0, column = 0)
self.addLabel(text = "Average processing time per customer",
row = 1, column = 0)
self.addLabel(text = "Probablity of new arrival",
row = 2, column = 0)
self.addLabel(text = "Number of cashiers",
row = 3, column = 0)
self.addLabel(text = "Results",
row = 5, column = 0, columnspan = 2, sticky = "NSEW")
self.runTimeFld = self.addIntegerField(value = 0, width = 5,
row = 0, column = 1)
self.aveTimeFld = self.addIntegerField(value = 0, width = 5,
row = 1, column = 1)
self.probabilityFld = self.addFloatField(value = 0.0, width = 5,
row = 2, column = 1)
self.cashiersFld = self.addIntegerField(value = 0, width = 5,
row = 3, column = 1)
self.outputArea = self.addTextArea("", row = 6, column = 0,
columnspan = 2,
width = 40, height = 10)
self.runBtn = self.addButton(text = "Run", row = 4, column = 0,
columnspan = 2,
command = self.run)
# Event handling method.
def run(self):
"""Obtains the inputs, validates them, runs the simulation,
and displays the results."""
# Obtain and validate the inputs
lengthOfSimulation = self.runTimeFld.getNumber()
averageTimePerCus = self.aveTimeFld.getNumber()
probabilityOfNewArrival = self.probabilityFld.getNumber()
numCashiers = self.cashiersFld.getNumber()
if lengthOfSimulation == 0 or averageTimePerCus == 0 \
or probabilityOfNewArrival == 0 or numCashiers == 0:
self.messageBox("ERROR", "All inputs must be greater than 0")
return
# Create and run the simulation
model = MarketModel(lengthOfSimulation, averageTimePerCus,
probabilityOfNewArrival, numCashiers)
model.runSimulation()
# Display the results
self.outputArea.setText(str(model))
if __name__ == "__main__":
MarketView().mainloop()