diff --git a/aula202-calculadora/buttons.py b/aula202-calculadora/buttons.py index f816d7d..98fe96b 100644 --- a/aula202-calculadora/buttons.py +++ b/aula202-calculadora/buttons.py @@ -1,3 +1,5 @@ +from display import Display +from PySide6.QtCore import Slot from PySide6.QtWidgets import QGridLayout, QPushButton from utils import isEmpty, isNumOrDot from variables import MEDIUM_FONT_SIZE @@ -13,10 +15,11 @@ class Button(QPushButton): font.setPixelSize(MEDIUM_FONT_SIZE) self.setFont(font) self.setMinimumSize(75, 75) + self.setCheckable(True) class ButtonsGrid(QGridLayout): - def __init__(self, *args, **kwargs) -> None: + def __init__(self, display: Display, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self._gridMask = [ @@ -26,6 +29,7 @@ class ButtonsGrid(QGridLayout): ['1', '2', '3', '+'], ['', '0', '.', '='], ] + self.display = display self._makeGrid() def _makeGrid(self): @@ -37,3 +41,18 @@ class ButtonsGrid(QGridLayout): button.setProperty('cssClass', 'specialButton') self.addWidget(button, rowNumber, colNumber) + buttonSlot = self._makeButtonDisplaySlot( + self._insertButtonTextToDisplay, + button, + ) + button.clicked.connect(buttonSlot) # type: ignore + + def _makeButtonDisplaySlot(self, func, *args, **kwargs): + @Slot(bool) + def realSlot(_): + func(*args, **kwargs) + return realSlot + + def _insertButtonTextToDisplay(self, button): + button_text = button.text() + self.display.insert(button_text) diff --git a/aula202-calculadora/main.py b/aula202-calculadora/main.py index 3dd527a..d3e034b 100644 --- a/aula202-calculadora/main.py +++ b/aula202-calculadora/main.py @@ -29,7 +29,7 @@ if __name__ == '__main__': window.addWidgetToVLayout(display) # Grid - buttonsGrid = ButtonsGrid() + buttonsGrid = ButtonsGrid(display) window.vLayout.addLayout(buttonsGrid) # Executa tudo