Resumo rápido: Neste post vamos criar uma automação em Python com Tkinter GUI que funciona como um Controle de Caixa Diário. Ela permite registrar entradas (receitas) e saídas (despesas), calcula automaticamente o saldo atual e exporta tudo para um relatório Excel. Tudo explicado de forma simples, passo a passo e com código comentado linha a linha. 🚀
Por que essa automação é útil para sua empresa? 🤔
-
Facilita o registro de movimentações financeiras.
-
Mantém o saldo do caixa sempre atualizado.
-
Substitui planilhas manuais ou controles em papel.
-
Gera relatórios organizados em Excel com um clique.
O que você terá com este projeto ✅
-
Uma interface gráfica simples para registrar entradas e saídas.
-
Exibição em tempo real de todas as movimentações.
-
Cálculo automático do saldo do caixa.
-
Exportação para Excel (
caixa_diario.xlsx
).
Pré-requisitos 🛠️
Antes de rodar, instale as dependências:
pip install pandas openpyxl
A biblioteca tkinter já vem instalada no Python do Windows.
Código completo (salve como controle_caixa.py
) 💻
# controle_caixa.py
import tkinter as tk # 1: biblioteca para criar a interface
from tkinter import messagebox # 2: mensagens de alerta/sucesso
import pandas as pd # 3: gerar relatórios Excel
# 4: lista que vai armazenar todas as movimentações
# Cada registro será um dicionário: {Tipo, Descrição, Valor, Saldo}
movimentacoes = []
saldo_atual = 0.0 # 5: saldo inicial
# 6: função para adicionar movimentação (entrada ou saída)
def adicionar_movimento(tipo):
global saldo_atual
descricao = entry_descricao.get() # 7: pega a descrição
valor = entry_valor.get() # 8: pega o valor digitado
if not descricao or not valor:
messagebox.showwarning("Aviso", "Preencha todos os campos!") # 9: validação
return
try:
valor = float(valor) # 10: converte valor em número
except:
messagebox.showwarning("Aviso", "Digite um valor numérico!")
return
if tipo == "Entrada":
saldo_atual += valor # 11: soma ao saldo
else:
saldo_atual -= valor # 12: subtrai do saldo
movimento = {
"Tipo": tipo,
"Descricao": descricao,
"Valor": valor,
"Saldo": saldo_atual
}
movimentacoes.append(movimento) # 13: adiciona na lista
atualizar_lista() # 14: atualiza exibição
entry_descricao.delete(0, tk.END) # 15: limpa campos
entry_valor.delete(0, tk.END)
# 16: função para atualizar a lista exibida
def atualizar_lista():
listbox.delete(0, tk.END) # 17: limpa lista
for i, mov in enumerate(movimentacoes): # 18: percorre todas as movimentações
listbox.insert(tk.END, f"{i+1}. {mov['Tipo']} | {mov['Descricao']} | R$ {mov['Valor']:.2f} | Saldo: R$ {mov['Saldo']:.2f}")
# 19: função para exportar relatório em Excel
def exportar_excel():
if not movimentacoes:
messagebox.showwarning("Aviso", "Nenhuma movimentação para exportar!")
return
df = pd.DataFrame(movimentacoes) # 20: cria DataFrame
df.to_excel("caixa_diario.xlsx", index=False) # 21: salva em Excel
messagebox.showinfo("Sucesso", "Relatório salvo como caixa_diario.xlsx")
# 22: configuração da interface gráfica
root = tk.Tk()
root.title("Controle de Caixa Diário")
root.geometry("700x500")
# 23: campos de entrada
tk.Label(root, text="Descrição:").pack(anchor="w", padx=10)
entry_descricao = tk.Entry(root, width=50)
entry_descricao.pack(anchor="w", padx=10, pady=5)
tk.Label(root, text="Valor (R$):").pack(anchor="w", padx=10)
entry_valor = tk.Entry(root, width=20)
entry_valor.pack(anchor="w", padx=10, pady=5)
# 24: botões para adicionar entrada ou saída
btn_entrada = tk.Button(root, text="Adicionar Entrada", command=lambda: adicionar_movimento("Entrada"), bg="#4CAF50", fg="white")
btn_entrada.pack(pady=5)
btn_saida = tk.Button(root, text="Adicionar Saída", command=lambda: adicionar_movimento("Saída"), bg="#F44336", fg="white")
btn_saida.pack(pady=5)
btn_exportar = tk.Button(root, text="Exportar para Excel", command=exportar_excel, bg="#2196F3", fg="white")
btn_exportar.pack(pady=5)
# 25: lista de movimentações
listbox = tk.Listbox(root, width=100, height=15)
listbox.pack(padx=10, pady=10)
root.mainloop() # 26: mantém a janela aberta
Explicação linha por linha (para leigos) 🧾
-
1 a 3: importamos bibliotecas para criar a interface e gerar Excel.
-
4 a 5: criamos a lista que guardará as movimentações e o saldo inicial.
-
6 a 15: função que registra uma movimentação (entrada ou saída), atualiza o saldo e adiciona na lista.
-
16 a 18: função que atualiza a lista exibida na tela.
-
19 a 21: função que exporta todas as movimentações para um arquivo Excel.
-
22 a 25: criamos a interface com campos de entrada, botões e lista.
-
26: mantém a janela aberta até o usuário fechar.
Como usar ✅
-
Salve o código no arquivo
controle_caixa.py
. -
Instale as dependências:
pip install pandas openpyxl
-
Execute o programa:
python controle_caixa.py
-
Na janela que abrir:
-
Digite a descrição da movimentação.
-
Informe o valor.
-
Clique em Adicionar Entrada ou Adicionar Saída.
-
Clique em Exportar para Excel para gerar
caixa_diario.xlsx
.
-
Possíveis melhorias futuras 🔧
-
Incluir campos de data e categoria.
-
Gerar gráficos de receitas x despesas.
-
Exportar relatórios mensais.
-
Conexão com banco de dados para histórico mais completo.
🚀 Conclusão
Com este Controle de Caixa Diário em Python, sua empresa pode organizar entradas e saídas de dinheiro de forma simples, prática e rápida. Em poucos cliques, você terá relatórios prontos para análise.
📢 Serviços de Contabilidade
Além de compartilhar automações, também ofereço meus serviços como contador:
-
Abertura de empresas no Simples Nacional;
-
Acompanhamento contábil mensal;
-
Planejamento tributário;
-
Orientação para profissionais de serviços.
👉 Entre em contato e leve eficiência também para a parte contábil da sua empresa! 🤝
Nenhum comentário:
Postar um comentário