programa completo, comentado, que cria uma calculadora com interface Qt, menu (Ficheiro / Editar / Ajuda), botões numéricos e de operações, e uma função de avaliação segura das expressões (para evitar usar eval directamente). Explico depois como correr o programa.
Requisitos: Python 3.7+ e PyQt5. Para instalar PyQt5:
pip install PyQt5
-
Estrutura geral
- O programa usa
QMainWindowpara ter uma barra de menus nativa. - O widget central contém um
QLineEdit(visor) e umaQGridLayoutcom botões da calculadora.
- O programa usa
-
Menu
- Ficheiro → Sair (atalho Ctrl+Q).
- Editar → Limpar (Ctrl+L) — limpa o visor.
- Ajuda → Sobre — mostra um dialog com informação.
-
Visor
QLineEditmostra a expressão/resultado, alinhado à direita.- Pode ser editado com o teclado (útil para colar expressões).
-
Botões
- Números, operadores e parêntesis colocados numa grelha.
- Botão
^é interpretado como potência (**) ao inserir no visor. - Botão
=avalia a expressão (chamacalcular()). - Botões
C(limpar) e←(backspace) para edição rápida.
-
Avaliação segura
-
Em vez de
eval, é utilizado o móduloastpara analisar a expressão e um visitante (SafeEval) que só permite:- Números inteiros/decimais,
- Operações binárias
+ - * / % **, - Operadores unários
+ -, - Parêntesis.
-
Isto evita execução de código arbitrário (p.ex. chamadas a funções, importações, etc.).
-
-
Tratamento de erros
ZeroDivisionErrordá uma caixa de erro específica.- Expressões inválidas mostram aviso.
- Outras excepções mostram erro genérico.
-
Localização / vírgulas
- O código aceita vírgulas como separador decimal (converte para ponto antes de avaliar).
- Guarda o código num ficheiro, por exemplo
calculadora_qt.py. - Instala PyQt5 se necessário:
pip install PyQt5 - Executa:
python calculadora_qt.py - Usa o rato ou teclado para inserir números e operações. Pressiona
=ou Enter para calcular.
Diz qual das opções queres que eu implemente a seguir — faço a alteração directamente.