From 8c1051e9eb6937fcdd58a11219e3ac5cb0cf5cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Wed, 1 Mar 2023 09:57:16 -0300 Subject: [PATCH] =?UTF-8?q?Calculadora:=20criando=20a=20grid=20de=20bot?= =?UTF-8?q?=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula202-calculadora/buttons.py | 15 +++++++++++++-- aula202-calculadora/main.py | 2 +- aula202-calculadora/utils.py | 11 +++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 aula202-calculadora/utils.py diff --git a/aula202-calculadora/buttons.py b/aula202-calculadora/buttons.py index 070ee74..f816d7d 100644 --- a/aula202-calculadora/buttons.py +++ b/aula202-calculadora/buttons.py @@ -1,4 +1,5 @@ from PySide6.QtWidgets import QGridLayout, QPushButton +from utils import isEmpty, isNumOrDot from variables import MEDIUM_FONT_SIZE @@ -12,17 +13,27 @@ class Button(QPushButton): font.setPixelSize(MEDIUM_FONT_SIZE) self.setFont(font) self.setMinimumSize(75, 75) - self.setProperty('cssClass', 'specialButton') class ButtonsGrid(QGridLayout): def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) - self._grid_mask = [ + self._gridMask = [ ['C', '◀', '^', '/'], ['7', '8', '9', '*'], ['4', '5', '6', '-'], ['1', '2', '3', '+'], ['', '0', '.', '='], ] + self._makeGrid() + + def _makeGrid(self): + for rowNumber, rowData in enumerate(self._gridMask): + for colNumber, buttonText in enumerate(rowData): + button = Button(buttonText) + + if not isNumOrDot(buttonText) and not isEmpty(buttonText): + button.setProperty('cssClass', 'specialButton') + + self.addWidget(button, rowNumber, colNumber) diff --git a/aula202-calculadora/main.py b/aula202-calculadora/main.py index 7a52d3e..3dd527a 100644 --- a/aula202-calculadora/main.py +++ b/aula202-calculadora/main.py @@ -1,6 +1,6 @@ import sys -from buttons import Button, ButtonsGrid +from buttons import ButtonsGrid from display import Display from info import Info from main_window import MainWindow diff --git a/aula202-calculadora/utils.py b/aula202-calculadora/utils.py new file mode 100644 index 0000000..67e662b --- /dev/null +++ b/aula202-calculadora/utils.py @@ -0,0 +1,11 @@ +import re + +NUM_OR_DOT_REGEX = re.compile(r'^[0-9.]$') + + +def isNumOrDot(string: str): + return bool(NUM_OR_DOT_REGEX.search(string)) + + +def isEmpty(string: str): + return len(string) == 0