terça-feira, 16 de setembro de 2025

📦📊 Automação Python com GUI (Tkinter): Controle de Estoque Simplificado 📦📊

 Resumo rápido: Neste post vamos criar uma automação em Python com Tkinter GUI que funciona como um Controle de Estoque Simplificado. Você poderá cadastrar produtos, registrar entradas e saídas, visualizar o saldo de cada item e exportar tudo para um relatório Excel. Tudo isso com explicação clara, código comentado linha a linha e pronto para uso. 🚀


Por que essa automação é útil para sua empresa? 🤔

  • Evita erros no controle de produtos.

  • Permite ver estoque atual em tempo real.

  • Substitui controles manuais em papel ou planilhas bagunçadas.

  • Gera relatórios organizados em Excel com apenas um clique.


O que você terá com este projeto ✅

  1. Uma interface gráfica para cadastrar produtos.

  2. Registro de entradas e saídas de mercadorias.

  3. Cálculo automático do estoque atualizado.

  4. Exportação para Excel (estoque.xlsx).


Pré-requisitos 🛠️

Antes de rodar, instale as dependências:

pip install pandas openpyxl

A biblioteca tkinter já vem junto com o Python no Windows.


Código completo (salve como controle_estoque.py) 💻

# controle_estoque.py import tkinter as tk # 1: interface gráfica from tkinter import messagebox # 2: mensagens de alerta import pandas as pd # 3: gerar relatórios em Excel # 4: lista que vai armazenar os produtos # Cada item será um dicionário: {Produto, Quantidade, Preço, Total} estoque = [] # 5: função para registrar entrada ou saída def registrar_movimento(tipo): produto = entry_produto.get() # 6: pega nome do produto qtd = entry_qtd.get() # 7: pega quantidade preco = entry_preco.get() # 8: pega preço unitário if not produto or not qtd or not preco: messagebox.showwarning("Aviso", "Preencha todos os campos!") # 9: validação return try: qtd = int(qtd) preco = float(preco) except: messagebox.showwarning("Aviso", "Digite valores válidos (número inteiro para quantidade, número decimal para preço).") return if tipo == "Saída": qtd = -qtd # 10: saída diminui estoque # 11: verifica se produto já existe no estoque for item in estoque: if item["Produto"] == produto: item["Quantidade"] += qtd item["Preço"] = preco item["Total"] = item["Quantidade"] * preco atualizar_lista() limpar_campos() return # 12: se produto não existe, cria novo novo_item = { "Produto": produto, "Quantidade": qtd, "Preço": preco, "Total": qtd * preco } estoque.append(novo_item) atualizar_lista() limpar_campos() # 13: função para atualizar a lista exibida def atualizar_lista(): listbox.delete(0, tk.END) for i, item in enumerate(estoque): listbox.insert(tk.END, f\"{i+1}. {item['Produto']} | Qtd: {item['Quantidade']} | Preço: R$ {item['Preço']:.2f} | Total: R$ {item['Total']:.2f}\") # 14: função para exportar relatório em Excel def exportar_excel(): if not estoque: messagebox.showwarning(\"Aviso\", \"Nenhum dado para exportar!\") return df = pd.DataFrame(estoque) df.to_excel(\"estoque.xlsx\", index=False) messagebox.showinfo(\"Sucesso\", \"Relatório salvo como estoque.xlsx\") # 15: limpar campos de entrada def limpar_campos(): entry_produto.delete(0, tk.END) entry_qtd.delete(0, tk.END) entry_preco.delete(0, tk.END) # 16: configuração da interface gráfica root = tk.Tk() root.title(\"Controle de Estoque Simplificado\") root.geometry(\"800x500\") # 17: campos de entrada tk.Label(root, text=\"Produto:\").pack(anchor=\"w\", padx=10) entry_produto = tk.Entry(root, width=40) entry_produto.pack(anchor=\"w\", padx=10, pady=5) tk.Label(root, text=\"Quantidade:\").pack(anchor=\"w\", padx=10) entry_qtd = tk.Entry(root, width=20) entry_qtd.pack(anchor=\"w\", padx=10, pady=5) tk.Label(root, text=\"Preço Unitário (R$):\").pack(anchor=\"w\", padx=10) entry_preco = tk.Entry(root, width=20) entry_preco.pack(anchor=\"w\", padx=10, pady=5) # 18: botões btn_entrada = tk.Button(root, text=\"Registrar Entrada\", command=lambda: registrar_movimento(\"Entrada\"), bg=\"#4CAF50\", fg=\"white\") btn_entrada.pack(pady=5) btn_saida = tk.Button(root, text=\"Registrar Saída\", command=lambda: registrar_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) # 19: lista do estoque listbox = tk.Listbox(root, width=100, height=15) listbox.pack(padx=10, pady=10) root.mainloop() # 20: mantém a janela aberta

Explicação linha por linha 🧾

  • 1 a 3: importamos as bibliotecas necessárias.

  • 4: criamos a lista que vai armazenar os produtos do estoque.

  • 5 a 12: função para registrar entrada ou saída de produtos.

  • 13: atualiza a lista exibida na tela.

  • 14: exporta o estoque para Excel.

  • 15: limpa os campos após registrar.

  • 16 a 19: monta a interface com campos, botões e lista.

  • 20: mantém a janela aberta até o usuário fechar.


Como usar ✅

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

  2. Instale as dependências:

pip install pandas openpyxl
  1. Execute o programa:

python controle_estoque.py
  1. Na janela que abrir:

    • Digite o nome do produto.

    • Informe a quantidade e o preço unitário.

    • Clique em Registrar Entrada ou Registrar Saída.

    • Clique em Exportar para Excel para gerar estoque.xlsx.


Possíveis melhorias futuras 🔧

  • Adicionar campo de código de barras.

  • Criar relatórios mensais de movimentação.

  • Incluir gráficos de estoque.

  • Conectar a um banco de dados para histórico completo.


🚀 Conclusão

Com este Controle de Estoque em Python, sua empresa terá mais segurança no acompanhamento das mercadorias. É simples, rápido e pode crescer conforme suas necessidades.


📢 Serviços de Contabilidade

Além de compartilhar automações em Python, 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 organização também para a parte contábil da sua empresa! 🤝

Nenhum comentário:

Postar um comentário