![]() |
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.