From dd20e4488e900d49bc00ee33432d4322e42bc8b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Wed, 1 Mar 2023 16:24:14 -0300 Subject: [PATCH] =?UTF-8?q?Calculadora:=20permitindo=20apenas=20n=C3=BAmer?= =?UTF-8?q?os=20v=C3=A1lidos=20no=20display?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula202-calculadora/buttons.py | 12 ++++++++---- aula202-calculadora/utils.py | 10 ++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) 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