diff --git a/aula202-calculadora/buttons.py b/aula202-calculadora/buttons.py index 98fe96b..a7b971c 100644 --- a/aula202-calculadora/buttons.py +++ b/aula202-calculadora/buttons.py @@ -1,7 +1,7 @@ from display import Display from PySide6.QtCore import Slot from PySide6.QtWidgets import QGridLayout, QPushButton -from utils import isEmpty, isNumOrDot +from utils import isEmpty, isNumOrDot, isValidNumber from variables import MEDIUM_FONT_SIZE @@ -15,7 +15,6 @@ class Button(QPushButton): font.setPixelSize(MEDIUM_FONT_SIZE) self.setFont(font) self.setMinimumSize(75, 75) - self.setCheckable(True) class ButtonsGrid(QGridLayout): @@ -54,5 +53,10 @@ class ButtonsGrid(QGridLayout): return realSlot def _insertButtonTextToDisplay(self, button): - button_text = button.text() - self.display.insert(button_text) + buttonText = button.text() + newDisplayValue = self.display.text() + buttonText + + if not isValidNumber(newDisplayValue): + return + + self.display.insert(buttonText) diff --git a/aula202-calculadora/utils.py b/aula202-calculadora/utils.py index 67e662b..e28ca00 100644 --- a/aula202-calculadora/utils.py +++ b/aula202-calculadora/utils.py @@ -7,5 +7,15 @@ def isNumOrDot(string: str): return bool(NUM_OR_DOT_REGEX.search(string)) +def isValidNumber(string: str): + valid = False + try: + float(string) + valid = True + except ValueError: + valid = False + return valid + + def isEmpty(string: str): return len(string) == 0