Ultimas do CanalQb

Python - Minha primeira calculadora em PyQt5

Python - Minha primeira calculadora em PyQt5
Canal Qb

Instale:
pip install pyqt5
Rode o Script:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QGridLayout, QMainWindow, QLabel
from PyQt5.QtCore import Qt
 

class Calculadora(QWidget):
    def __init__(self):
        super().__init__()

        # Definindo o layout
        layout = QVBoxLayout()
        self.setLayout(layout)
        self.setWindowTitle("@CanalQb no Youtube")
        # Definindo o visor
        self.visor = QLineEdit()
        self.visor.setAlignment(Qt.AlignRight)
        layout.addWidget(self.visor)

        # Definindo os botões
        botoes = {
            '7': (0, 0), '8': (0, 1), '9': (0, 2), '/': (0, 3),
            '4': (1, 0), '5': (1, 1), '6': (1, 2), '*': (1, 3),
            '1': (2, 0), '2': (2, 1), '3': (2, 2), '-': (2, 3),
            '0': (3, 0), 'C': (3, 1), '=': (3, 2), '+': (3, 3),
            '%': (4, 0), '√': (4, 1), 'x²': (4, 2), '(': (4, 3),
            ')': (5, 0), 'sin': (5, 1), 'cos': (5, 2), 'log': (5, 3)
        }
        grid = QGridLayout()
        layout.addLayout(grid)

        for botao, posicao in botoes.items():
            botao_obj = QPushButton(botao)
            botao_obj.clicked.connect(lambda _, arg=botao: self.clique(arg))
            grid.addWidget(botao_obj, *posicao)

    def clique(self, botao):
        # Lógica de cálculo
        if botao == 'C':
            self.visor.setText('')
        elif botao == '=':
            try:
                resultado = eval(self.visor.text())
                self.visor.setText(str(resultado))
            except:
                self.visor.setText('Erro')
        elif botao == 'x²':
            self.visor.setText(str(float(self.visor.text()) ** 2))
        elif botao == '%':
            try:
                resultado = eval(str(float(self.visor.text()) / 100))
                self.visor.setText(str(resultado))
            except:
                self.visor.setText('Erro')
        elif botao == '√':
            self.visor.setText(str(float(self.visor.text()) ** 0.5))
        elif botao in ['sin', 'cos', 'log']:
            try:
                if botao == 'sin':
                    resultado = eval('sin(' + self.visor.text() + ')')
                elif botao == 'cos':
                    resultado = eval('cos(' + self.visor.text() + ')')
                elif botao == 'log':
                    resultado = eval('log(' + self.visor.text() + ')')
                self.visor.setText(str(resultado))
            except:
                self.visor.setText('Erro')
        else:
            self.visor.setText(self.visor.text() + botao)


if __name__ == '__main__':
    app = QApplication([])
    calculadora = Calculadora()
    calculadora.show()
    app.exec_()
 

Nenhum comentário

Comente só assim vamos crescer juntos!

Observação: somente um membro deste blog pode postar um comentário.