Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Python: Crie Sua Primeira Calculadora com PyQt5 Passo a Passo

#Python; #PyQt5; #Programação
@CanalQb Python - Minha primeira calculadora em PyQt5
@CanalQb no Youtube

Como criar uma calculadora simples em Python usando PyQt5

Se você está começando a programar em Python e deseja criar uma interface gráfica para seus projetos, PyQt5 é uma das bibliotecas mais populares e poderosas disponíveis. Neste tutorial, você vai aprender como construir sua primeira calculadora funcional, com operações básicas e algumas funções matemáticas avançadas.

Instalando o PyQt5

Antes de iniciar o desenvolvimento, é necessário instalar o PyQt5. Abra seu terminal ou prompt de comando e digite:

pip install pyqt5

Esse comando fará o download e instalação da biblioteca para que você possa utilizá-la em seus scripts Python.

O código da calculadora

O script abaixo cria uma interface gráfica simples, com um visor para mostrar os cálculos e botões para os números e operações. A calculadora suporta operações básicas, porcentagem, raiz quadrada, potência e funções trigonométricas como seno, cosseno e logaritmo.

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

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

        # Configurando o layout principal
        layout = QVBoxLayout()
        self.setLayout(layout)
        self.setWindowTitle("@CanalQb no Youtube")

        # Criando o visor de exibição
        self.visor = QLineEdit()
        self.visor.setAlignment(Qt.AlignRight)
        layout.addWidget(self.visor)

        # Definindo os botões e suas posiçõ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)

        # Criando os botões na interface
        for botao, posicao in botoes.items():
            botao_obj = QPushButton(botao)
            botao_obj.clicked.connect(lambda _, b=botao: self.clique(b))
            grid.addWidget(botao_obj, *posicao)

    def clique(self, botao):
        # Tratamento dos botões clicados
        if botao == 'C':
            self.visor.clear()
        elif botao == '=':
            try:
                resultado = eval(self.visor.text())
                self.visor.setText(str(resultado))
            except:
                self.visor.setText('Erro')
        elif botao == 'x²':
            try:
                valor = float(self.visor.text())
                self.visor.setText(str(valor ** 2))
            except:
                self.visor.setText('Erro')
        elif botao == '%':
            try:
                valor = float(self.visor.text())
                self.visor.setText(str(valor / 100))
            except:
                self.visor.setText('Erro')
        elif botao == '√':
            try:
                valor = float(self.visor.text())
                self.visor.setText(str(math.sqrt(valor)))
            except:
                self.visor.setText('Erro')
        elif botao in ['sin', 'cos', 'log']:
            try:
                valor = float(self.visor.text())
                if botao == 'sin':
                    resultado = math.sin(math.radians(valor))
                elif botao == 'cos':
                    resultado = math.cos(math.radians(valor))
                elif botao == 'log':
                    resultado = math.log10(valor)
                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_()

Detalhes importantes sobre o código

  • Utilizamos a função eval() para interpretar expressões matemáticas, o que simplifica o cálculo.
  • Para as funções trigonométricas, convertemos os valores para radianos, pois o módulo math trabalha em radianos.
  • O botão C limpa o visor, enquanto = calcula o resultado.
  • Funções adicionais como raiz quadrada, potência e porcentagem foram implementadas para ampliar a funcionalidade.

Considerações finais

Este projeto é um ótimo exercício para quem quer aprender sobre interfaces gráficas em Python com PyQt5 e manipulação básica de eventos. Você pode expandir a calculadora adicionando novos botões e funcionalidades, como memória, histórico, ou até mesmo gráficos.

Para acompanhar mais conteúdos como este, visite o canal oficial no @CanalQb.

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo