diff --git a/Projects/1-Beginner/Calculator-App/Calculator-App.py b/Projects/1-Beginner/Calculator-App/Calculator-App.py index 7d3f8afe..84e6ed11 100644 --- a/Projects/1-Beginner/Calculator-App/Calculator-App.py +++ b/Projects/1-Beginner/Calculator-App/Calculator-App.py @@ -17,7 +17,10 @@ class Calculator(): # The best way to place the buttons is ussing grid # It also require a main frame # The frame is also the master for the buttons and the label - self.buttonsSimbols=["A/C", "+/-", "/", "<-", "7","8","9","x", "4","5","6","-", "1","2","3","+", "0", ".", "="] + self.buttonsSimbols=["A/C", "+/-", " / ", "<-", "7","8","9","x", "4","5","6","-", "1","2","3","+", "0", ".", "="] + self.buttons = [] + self.word = "" + self.res = 0 self.CreateFrames() self.screen = ttk.Label(self.screenFrame, text="HOLA MUNDO", font=("Arial", 20, "bold"),justify="right") self.screen.pack(padx=10, pady=10, expand=True) @@ -39,15 +42,44 @@ class Calculator(): for j in range (6): for i in range (4): if l < len(self.buttonsSimbols): - self.buttons = ttk.Button(self.buttonsFrame, text= self.buttonsSimbols[l]) - self.buttons.grid(column=i, row=j,sticky="nsew", padx=5, pady=5) + self.buttons.append( ttk.Button(self.buttonsFrame, text= self.buttonsSimbols[l])) + self.buttons[l].grid(column=i, row=j,sticky="nsew", padx=5, pady=5) + self.buttons[l].bind("", self.ClickedButton) l +=1 + def ClickedButton(self, event): + if event.widget['text'] == "=": + self.ProcessText(event) + else: + self.word = self.word + event.widget['text'] + self.screen.config(text = self.word) + + def ProcessText(self, event): + self.screen.config(text="") + if self.word.find('+'): + self.res = self.word.split('+') + self.Operation("+", event) + elif self.word.find('-'): + self.res = self.word.split('-') + self.Operation("-", event) + elif self.word.find('/'): + self.res = self.word.split('/') + self.Operation("/", event) + elif self.word.find('x'): + self.res = self.word.split('x') + self.Operation("*", event) + + def Operation(self, simbol, event): + print(self.res) + self.word = str(eval(f"{int(self.res[0])} {simbol} {int(self.res[1])}")) + print(type(self.word)) + self.screen.config(text = self.word) + def Configure(self): for i in range(5): - self.mainFrame.rowconfigure(i, weight=1) + self.mainFrame.rowconfigure(i, weight=1, minsize=50) for i in range(4): - self.mainFrame.columnconfigure(i, weight=1) + self.mainFrame.columnconfigure(i, weight=1, minsize=50) def __str__(self): return super().__str__()