Skip to content

emilyfas/calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Calculator - Aplicativo de Calculadora com Histórico

Este é um projeto de calculadora com interface gráfica (GUI) desenvolvido em Python utilizando a biblioteca customtkinter. O aplicativo permite realizar operações matemáticas básicas, visualizar o histórico de cálculos e manter um design moderno e responsivo. Este projeto foi criado com foco em praticar conceitos de GUI, organização de código, manipulação de arquivos e boas práticas de desenvolvimento em Python.


Funcionalidades

  • Operações básicas: adição, subtração, multiplicação, divisão e módulo (%)
  • Interface gráfica customizada com customtkinter
  • Histórico de cálculos persistente em arquivo .csv
  • Reutilização de operações passadas com um clique
  • Limpeza do histórico com botão dedicado
  • Layout adaptado e amigável ao usuário

Estrutura do Projeto

Calculator/
│
├── history/
│ └── history.csv     # Armazena o histórico de operações
│
├── images/           # Ícones e imagens usados na GUI
│
├── constants.py      # Constantes visuais e de layout
├── gui.py            # Interface gráfica principal
├── history.py        # Lógica de manipulação do histórico (salvar, exibir, limpar)
├── logic.py          # Lógica das operações matemáticas
├── main.py           # Arquivo de entrada da aplicação


Como Executar o Projeto

1. Clone o repositório

git clone https://github.com/emilyfas/calculator.git
cd calculator

2. Instale as dependências

Este projeto requer as seguintes bibliotecas:

  • CustomTkinter
  • Pillow
  • Sympy

Você pode instalar todas com:

pip install -r requirements.txt

3. Execute a aplicação

python main.py

Detalhes Técnicos

gui.py

Responsável por iniciar e organizar todos os elementos gráficos, como:

  • Campo de entrada/display
  • Botões numéricos e operadores
  • Janela de histórico com scroll
  • Ícones personalizados
  • Eventos de clique e teclado

logic.py Controla toda a lógica matemática e tratamento de entrada, incluindo:

  • Validação de operadores
  • Construção da expressão
  • Simplificação e cálculo usando sympy
  • Formatação e normalização de resultados com Decimal
  • Restauração de entradas a partir do histórico

history.py Gerencia o histórico das operações realizadas:

  • Salva cada operação no history.csv
  • Lê e exibe as operações anteriores
  • Limpa o histórico
  • Permite restaurar uma operação clicando nela

constants.py Centraliza valores fixos usados no projeto como:

  • Cores da interface
  • Dimensões dos botões e janela
  • Caminhos para os arquivos de imagem
  • Operadores permitidos

Interface da Aplicação

A calculadora possui um tema escuro e botões estilizados para melhor visualização.
Os ícones utilizados estão na pasta images/.

Imagens de Referência:


Tecnologias Utilizadas

  • Python 3.12

  • CustomTkinter — para interface gráfica moderna

  • Pillow — para exibir ícones na GUI

  • Sympy — para manipulação segura de expressões matemáticas

  • CSV — para salvar e recuperar histórico de operações


Exemplo de Operação

1. Digite uma expressão (ex: 5 + 7)

2. Clique em =

3. O resultado aparecerá no display

4. A operação será salva automaticamente no histórico

5. Clique em History para visualizar ou restaurar


Histórico

O histórico é armazenado no arquivo calculator/history/history.csv com o seguinte formato:

Operação,Resultado
5+7,12
3*4,12

Ele é automaticamente limpo ao fechar o app ou manualmente clicando no botão de lixeira dentro da janela de histórico.


Autora

Emilly Fernandes
Estudante de Ciência da Computação
Projeto desenvolvido para portfólio pessoal.
LinkedIn | Portfólio

Dê uma estrela!

Se você gostou deste projeto, deixe uma ⭐ no repositório para ajudar na visibilidade!

About

Calculadora simples feita com Python e CustomTkinter. Suporta operações básicas, histórico de cálculos com armazenamento em CSV e interface personalizada.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages