class Gui(object): def __init__(self): self.smidgen_number = 0 self.pinch_number = 0 self.dash_number = 0 self.teaspoon_number = 0 self.dispensing_id = Spices.SALT # Default: id is salt (0) self.dispensing_id_text = SALT_DISPENSING_TEXT # Default: salt self.dispensing_amount = 0 self.dispensing_flag = False self.app = App(title="Pestle Co.") # All code must be added in th event loop # START self.option_window = Window(self.app, title="Choosing a spice") self.option_window.hide() # hide this window for now self.dispensing_window = Window(self.option_window, title="Dispensing") self.dispensing_window.hide() # hide this window for now self.app.set_full_screen() self.welcome_message = Text(self.app, text="Pestle Co.", size=40, font="Times New Roman", color="blue") self.start_button = PushButton(self.app, command=self.open_option_window, text="Push to Start") # Option page self.salt_button = PushButton(self.option_window, command=self.open_salt_dispensing_window, text="Salt", align="top") self.pepper_button = PushButton(self.option_window, command=self.open_pepper_dispensing_window, text="Pepper", align="top") self.done_button = PushButton(self.option_window, command=self.close_option_window, text="Done", align="bottom") # Dispensing page self.dispensing_text = Text(self.dispensing_window, text=self.dispensing_id_text) self.smidgen_button = PushButton(self.dispensing_window, command=self.add_a_smidgen, text="Smidgen") self.smidgen_number_text = Text(self.dispensing_window, text=str(self.smidgen_number) + " Smidgen(s)") self.pinch_button = PushButton(self.dispensing_window, command=self.add_a_pinch, text="Pinch") self.pinch_number_text = Text(self.dispensing_window, text=str(self.pinch_number) + " Pinch(es)") self.dash_button = PushButton(self.dispensing_window, command=self.add_a_dash, text="Dash") self.dash_number_text = Text(self.dispensing_window, text=str(self.dash_number) + " Dash(es)") self.teaspoon_button = PushButton(self.dispensing_window, command=self.add_a_teaspoon, text="Teaspoon") self.teaspoon_number_text = Text(self.dispensing_window, text=str(self.teaspoon_number) + " Teaspoon(s)") self.dispense_button = PushButton(self.dispensing_window, command=self.final_dispense, text="Dispense", align="bottom") self.reset_button = PushButton(self.dispensing_window, command=self.reset_measurement, text="Reset", align="bottom") # STOP self.app.display() # Helper functions: windows def open_option_window(self): self.option_window.show(wait=True) self.option_window.set_full_screen() def close_option_window(self): self.option_window.exit_full_screen() self.option_window.hide() self.app.display() def open_dispensing_window(self): self.dispensing_window.show(wait=True) self.dispensing_window.set_full_screen() def close_dispensing_window(self): self.dispensing_window.exit_full_screen() self.dispensing_window.hide() self.open_option_window() def open_salt_dispensing_window(self): self.dispensing_id_text = SALT_DISPENSING_TEXT self.dispensing_text.set(self.dispensing_id_text) self.open_dispensing_window() def open_pepper_dispensing_window(self): self.dispensing_id_text = PEPPER_DISPENSING_TEXT self.dispensing_text.set(self.dispensing_id_text) self.open_dispensing_window() # Helper functions: dispensing def add_a_smidgen(self): self.smidgen_number += 1 self.smidgen_number_text.set(str(self.smidgen_number) + " Smidgen(s)") self.dispensing_amount += GRAMS_SALT_PER_TEASPOON/SMIDGENS_PER_TEASPOON if self.dispensing_id == Spices.SALT \ else GRAMS_PEPPER_PER_TEASPOON/SMIDGENS_PER_TEASPOON def add_a_pinch(self): self.pinch_number += 1 self.pinch_number_text.set(str(self.pinch_number) + " Pinch(es)") self.dispensing_amount += GRAMS_SALT_PER_TEASPOON/PINCHES_PER_TEASPOON if self.dispensing_id == Spices.SALT \ else GRAMS_PEPPER_PER_TEASPOON/PINCHES_PER_TEASPOON def add_a_dash(self): self.dash_number += 1 self.dash_number_text.set(str(self.dash_number) + " Dash(es)") self.dispensing_amount += GRAMS_SALT_PER_TEASPOON/DASHES_PER_TEASPOON if self.dispensing_id == Spices.SALT \ else GRAMS_PEPPER_PER_TEASPOON/DASHES_PER_TEASPOON def add_a_teaspoon(self): self.teaspoon_number += 1 self.teaspoon_number_text.set(str(self.teaspoon_number) + " Teaspoon(es)") self.dispensing_amount += GRAMS_SALT_PER_TEASPOON if self.dispensing_id == Spices.SALT \ else GRAMS_PEPPER_PER_TEASPOON def final_dispense(self): self.dispensing_flag = True self.close_dispensing_window() # Return to the dispensing window self.open_option_window() # Return to the option window def ready_to_dispense(self): return self.dispensing_flag def get_slot_id(self): return self.dispensing_id def get_amount_in_grams(self): return self.dispensing_amount def reset_measurement(self): self.smidgen_number = 0 self.smidgen_number_text.set(str(self.smidgen_number) + " Smidgen(s)") self.pinch_number = 0 self.pinch_number_text.set(str(self.pinch_number) + " Pinch(es)") self.dash_number = 0 self.dash_number_text.set(str(self.dash_number) + " Dash(es)") self.teaspoon_number = 0 self.teaspoon_number_text.set(str(self.teaspoon_number) + " Teaspoon(es)")
class Gui(object): def __init__(self): self.dispenser = TestDispenser() self.cup_number = 0 self.half_cup_number = 0 self.eighth_cup_number = 0 self.teaspoon_number = 0 self.dispensing_id = Ingredient.SALT # Default: id is salt (0) self.dispensing_id_text = SALT_DISPENSING_TEXT # Default: salt self.dispensing_amount = 0 self.dispensing_flag = False self.app = App(title="Pestle Co.") # All code must be added in th event loop # START # Set up the option window and hide it for now self.option_window = Window(self.app, title="Choosing a spice") self.option_window.hide() # hide this window for now # Set up the dispensing window and hide it for now self.dispensing_window = Window(self.option_window, title="Dispensing") self.dispensing_window.hide() # hide this window for now # Set up the welcome window #self.app.set_full_screen() self.welcome_message = Text(self.app, text="Pestle Co.", size=70, font="Times New Roman", color="blue") self.start_button = PushButton(self.app, command=self.open_option_window, text="Push to Start", width=20, height=5) self.start_button.text_color = (205, 133, 0) self.start_button.text_size = 30 # Option page/window set up # Salt button self.salt_button = PushButton(self.option_window, command=self.open_salt_dispensing_window, text="Salt", align="top", width=10, height=2) self.salt_button.text_color = (205, 133, 0) self.salt_button.text_size = 20 # Flour button self.flour_button = PushButton( self.option_window, command=self.open_flour_dispensing_window, text="Flour", align="top", width=10, height=2) self.flour_button.text_color = (205, 133, 0) self.flour_button.text_size = 20 # Sugar button self.sugar_button = PushButton( self.option_window, command=self.open_sugar_dispensing_window, text="Sugar", align="top", width=10, height=2) self.sugar_button.text_color = (205, 133, 0) self.sugar_button.text_size = 20 # Done button self.done_button = PushButton(self.option_window, command=self.close_option_window, text="Done", align="bottom", width=10, height=2) self.done_button.text_color = (205, 133, 0) self.done_button.text_size = 20 # Dispensing page/window set up self.dispensing_text = Text(self.dispensing_window, text=self.dispensing_id_text) self.cup_button = PushButton(self.dispensing_window, command=self.add_a_cup, text="Cup") self.cup_number_text = Text(self.dispensing_window, text=str(self.cup_number) + " Cups(s)") self.cup_button.text_color = (205, 133, 0) self.cup_button.text_size = 20 self.half_cup_button = PushButton(self.dispensing_window, command=self.add_a_half_cup, text="Half Cup") self.half_cup_number_text = Text(self.dispensing_window, text=str(self.half_cup_number) + " Half_cup(es)") self.half_cup_button.text_color = (205, 133, 0) self.half_cup_button.text_size = 20 self.eighth_cup_button = PushButton(self.dispensing_window, command=self.add_a_eighth_cup, text="Eighth_cup") self.eighth_cup_number_text = Text(self.dispensing_window, text=str(self.eighth_cup_number) + " Eighth_cup(es)") self.eighth_cup_button.text_color = (205, 133, 0) self.eighth_cup_button.text_size = 20 self.teaspoon_button = PushButton(self.dispensing_window, command=self.add_a_teaspoon, text="Teaspoon") self.teaspoon_number_text = Text(self.dispensing_window, text=str(self.teaspoon_number) + " Teaspoon(s)") self.teaspoon_button.text_color = (205, 133, 0) self.teaspoon_button.text_size = 20 self.dispense_button = PushButton(self.dispensing_window, command=self.final_dispense, text="Dispense", align="bottom") self.reset_button = PushButton(self.dispensing_window, command=self.reset_measurement, text="Reset", align="bottom") # STOP print("here") self.app.display() # Helper functions: windows def open_option_window(self): self.option_window.show(wait=True) #self.option_window.set_full_screen() def close_option_window(self): self.option_window.exit_full_screen() self.option_window.hide() self.app.display() def open_dispensing_window(self): self.dispensing_window.show(wait=True) #self.dispensing_window.set_full_screen() def close_dispensing_window(self): self.dispensing_window.exit_full_screen() self.dispensing_window.hide() self.open_option_window() def open_salt_dispensing_window(self): self.dispensing_id_text = SALT_DISPENSING_TEXT self.dispensing_text.clear() self.dispensing_text.append(self.dispensing_id_text) self.dispensing_id = Ingredient.SALT self.open_dispensing_window() def open_flour_dispensing_window(self): self.dispensing_id_text = FLOUR_DISPENSING_TEXT self.dispensing_text.clear() self.dispensing_text.append(self.dispensing_id_text) self.dispensing_id = Ingredient.FLOUR self.open_dispensing_window() def open_sugar_dispensing_window(self): self.dispensing_id_text = SUGAR_DISPENSING_TEXT self.dispensing_text.clear() self.dispensing_text.append(self.dispensing_id_text) self.dispensing_id = Ingredient.SUGAR self.open_dispensing_window() def add_dispensing_amount(self, dispensing_id, unit): grams_per_cup = GRAMS_SALT_PER_CUP # default conversion_per_cup = CUPS_PER_CUP # default if dispensing_id == Ingredient.SALT: grams_per_cup = GRAMS_SALT_PER_CUP elif dispensing_id == Ingredient.FLOUR: grams_per_cup = GRAMS_FLOUR_PER_CUP elif dispensing_id == Ingredient.SUGAR: grams_per_cup = GRAMS_SUGAR_PER_CUP if unit == Unit.CUP: conversion_per_cup = CUPS_PER_CUP elif unit == Unit.HALF_CUP: conversion_per_cup = HALF_CUPS_PER_CUP elif unit == Unit.FOURTH_CUP: conversion_per_cup = FOURTH_CUPS_PER_CUP elif unit == Unit.EIGHTH_CUPS: conversion_per_cup = EIGHTH_CUPS_PER_CUP elif unit == Unit.TEASPOON: conversion_per_cup = TEASPOON_PER_CUP self.dispensing_amount += grams_per_cup / conversion_per_cup # Helper functions: dispensing def add_a_cup(self): self.cup_number += 1 self.cup_number_text.clear() self.cup_number_text.append(str(self.cup_number) + " Cup(s)") self.add_dispensing_amount(self.dispensing_id, Unit.CUP) def add_a_half_cup(self): self.half_cup_number += 1 self.half_cup_number_text.clear() self.half_cup_number_text.append( str(self.half_cup_number) + " Half Cup(s)") self.add_dispensing_amount(self.dispensing_id, Unit.HALF_CUP) def add_a_eighth_cup(self): self.eighth_cup_number += 1 self.eighth_cup_number_text.clear() self.eighth_cup_number_text.append( str(self.eighth_cup_number) + " Eighth Cup(s)") self.add_dispensing_amount(self.dispensing_id, Unit.EIGHTH_CUPS) def add_a_teaspoon(self): self.teaspoon_number += 1 self.teaspoon_number_text.clear() self.teaspoon_number_text.append( str(self.teaspoon_number) + " Teaspoon(s)") self.add_dispensing_amount(self.dispensing_id, Unit.TEASPOON) def ready_to_dispense(self): return self.dispensing_flag def get_slot_id(self): print(self.dispensing_id) if (self.dispensing_id == Ingredient.SALT): return 0 if (self.dispensing_id == Ingredient.FLOUR): return 1 if (self.dispensing_id == Ingredient.SUGAR): return 2 #return 0 def get_amount_in_grams(self): return self.dispensing_amount def reset_measurement(self): self.dispensing_amount = 0 self.cup_number = 0 self.cup_number_text.clear() self.cup_number_text.append(str(self.cup_number) + " Cup(s)") self.half_cup_number = 0 self.half_cup_number_text.clear() self.half_cup_number_text.append( str(self.half_cup_number) + " Half Cup(s)") self.eighth_cup_number = 0 self.eighth_cup_number_text.clear() self.eighth_cup_number_text.append( str(self.eighth_cup_number) + " Eighth Cup(s)") self.teaspoon_number = 0 self.teaspoon_number_text.clear() self.teaspoon_number_text.append( str(self.teaspoon_number) + " Teaspoon(s)") def final_dispense(self): print("in final") self.dispensing_flag = True self.dispenser.dispense(self.get_slot_id(), self.dispensing_amount) self.reset_measurement() self.close_dispensing_window() # Return to the dispensing window self.open_option_window() # Return to the option window