Calculadora: capturando teclas ENTER, Backspace e ESC

This commit is contained in:
Luiz Otávio
2023-03-04 07:35:02 -03:00
parent 8afa43dc61
commit e107d671b0
2 changed files with 27 additions and 3 deletions

View File

@@ -63,7 +63,9 @@ class ButtonsGrid(QGridLayout):
print('Signal recebido por "vouApagarVocê" em', type(self).__name__)
def _makeGrid(self):
self.display.eqRequested.connect(self.vouApagarVocê)
self.display.eqPressed.connect(self.vouApagarVocê)
self.display.delPressed.connect(self.display.backspace)
self.display.clearPressed.connect(self.vouApagarVocê)
for rowNumber, rowData in enumerate(self._gridMask):
for colNumber, buttonText in enumerate(rowData):

View File

@@ -1,11 +1,14 @@
from PySide6.QtCore import Qt, Signal
from PySide6.QtGui import QKeyEvent
from PySide6.QtWidgets import QLineEdit
from utils import isEmpty
from variables import BIG_FONT_SIZE, MINIMUM_WIDTH, TEXT_MARGIN
class Display(QLineEdit):
eqRequested = Signal()
eqPressed = Signal()
delPressed = Signal()
clearPressed = Signal()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -20,12 +23,31 @@ class Display(QLineEdit):
self.setTextMargins(*margins)
def keyPressEvent(self, event: QKeyEvent) -> None:
text = event.text().strip()
key = event.key()
KEYS = Qt.Key
isEnter = key in [KEYS.Key_Enter, KEYS.Key_Return]
isDelete = key in [KEYS.Key_Backspace, KEYS.Key_Delete]
isEsc = key in [KEYS.Key_Escape]
if isEnter:
print('Enter pressionado, sinal emitido', type(self).__name__)
self.eqRequested.emit()
self.eqPressed.emit()
return event.ignore()
if isDelete:
print('isDelete pressionado, sinal emitido', type(self).__name__)
self.delPressed.emit()
return event.ignore()
if isEsc:
print('isEsc pressionado, sinal emitido', type(self).__name__)
self.clearPressed.emit()
return event.ignore()
# Não passar daqui se não tiver texto
if isEmpty(text):
return event.ignore()
print('Texto', text)