domingo, 14 de setembro de 2025

💰📊 Automação Python com GUI (Tkinter): Controle de Caixa Diário 💰📊

 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 ✅

  1. Uma interface gráfica simples para registrar entradas e saídas.

  2. Exibição em tempo real de todas as movimentações.

  3. Cálculo automático do saldo do caixa.

  4. 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 ✅

  1. Salve o código no arquivo controle_caixa.py.

  2. Instale as dependências:

pip install pandas openpyxl
  1. Execute o programa:

python controle_caixa.py
  1. 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