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