Aplicativo desktop de conversao de moedas desenvolvido em Python com interface grafica Tkinter.
- Conversao entre BRL, USD, EUR, GBP, JPY e CAD.
- Lista ampliada de moedas carregada da API, com principais moedas no topo.
- Dropdowns com bandeira, codigo e nome da moeda.
- Consulta online de taxas de cambio com fallback local.
- Validacao de campos e mensagens de erro.
- Historico de conversoes salvo localmente em CSV.
- Grafico cambial em Tkinter Canvas com periodos diario, semanal, mensal e anual.
- Grafico interativo com tooltip, data, taxa e fonte dos dados.
- Taxa atual em destaque ao abrir o app.
- Conversor no padrao de duas caixas: valor de origem e valor convertido.
- Historico com rolagem para muitas conversoes.
- Botao para limpar historico.
- Botao para sincronizar taxa e grafico sob demanda.
- Exibicao de alta, baixa e oscilacao do periodo.
- Atualizacao automatica periodica dos graficos.
- Encerramento seguro da janela.
- Interface de pagina unica, sem navegacao lateral artificial.
Use Python 3.10 ou superior.
python3 -m pip install -r requirements.txt
python3 -m moneyconvertO Tkinter faz parte da instalacao do Python e nao pode ser instalado pelo pip. Para verificar sua disponibilidade:
python3 -m tkinterNo Ubuntu ou Debian, se necessario, instale-o com sudo apt install python3-tk.
Opcionalmente, crie um ambiente virtual para o projeto:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python -m moneyconvertpython3 -m unittest discover -s testsA matriz RF01-RF20 esta documentada em docs/requisitos-funcionais.md.
O app usa a API publica Frankfurter v2 (https://api.frankfurter.dev/v2) para obter taxa atual e serie historica real do par selecionado. Se a rede ou a API falhar, a conversao usa fallback local e o grafico indica claramente que a fonte nao e online.
moneyconvert/
config/ Constantes e moedas suportadas
presentation/ Interface Tkinter
services/ Conversao, validacao e APIs
storage/ Persistencia local
tests/ Testes automatizados da regra de negocio
O codigo segue as convencoes do Python: funcoes e variaveis em snake_case, classes em PascalCase e constantes em UPPER_CASE. Código sempre em ingles e comentarios em portugues para facilitar.
O foco atual e execucao fluida durante o desenvolvimento. Quando necessario, o projeto pode ser empacotado com PyInstaller para gerar .app no macOS ou .exe no Windows.