segunda-feira, 15 de setembro de 2025

📅⏰ Automação Python com GUI (Tkinter): Agenda de Compromissos Empresarial

 Resumo rápido: Neste post vamos criar uma automação em Python com Tkinter GUI que funciona como uma Agenda de Compromissos Empresarial. Você poderá registrar reuniões, prazos e tarefas importantes, visualizar tudo em uma lista organizada, receber alertas de compromissos próximos e exportar os dados para um relatório Excel. Tudo explicado em linguagem simples, com código comentado linha a linha. 🚀


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

  • Evita esquecer compromissos importantes.

  • Substitui a agenda de papel ou anotações soltas.

  • Permite registrar, consultar e exportar facilmente seus compromissos.

  • Ajuda no planejamento e organização empresarial.


O que você terá com este projeto ✅

  1. Uma interface gráfica para cadastrar compromissos.

  2. Exibição em tempo real de todos os eventos.

  3. Alertas internos para compromissos próximos.

  4. Exportação da agenda para Excel (agenda_compromissos.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 agenda_compromissos.py) 💻

# agenda_compromissos.py import tkinter as tk # 1: interface gráfica from tkinter import messagebox # 2: alertas import pandas as pd # 3: exportar Excel from datetime import datetime # 4: trabalhar com datas e horas # 5: lista que vai armazenar todos os compromissos compromissos = [] # 6: função para adicionar compromisso def adicionar_compromisso(): descricao = entry_descricao.get() # 7: pega descrição digitada data = entry_data.get() # 8: pega data hora = entry_hora.get() # 9: pega hora if not descricao or not data or not hora: messagebox.showwarning("Aviso", "Preencha todos os campos!") # 10: validação return try: datahora = datetime.strptime(f"{data} {hora}", "%d/%m/%Y %H:%M") # 11: converte para data except: messagebox.showwarning("Aviso", "Formato de data ou hora inválido! Use DD/MM/AAAA HH:MM") return compromisso = { "Descrição": descricao, "Data": data, "Hora": hora, "DataHora": datahora } compromissos.append(compromisso) # 12: adiciona na lista atualizar_lista() # 13: atualiza lista na tela entry_descricao.delete(0, tk.END) # 14: limpa campos entry_data.delete(0, tk.END) entry_hora.delete(0, tk.END) # 15: atualizar lista de compromissos def atualizar_lista(): listbox.delete(0, tk.END) compromissos.sort(key=lambda x: x["DataHora"]) # 16: ordena por data/hora agora = datetime.now() for i, c in enumerate(compromissos): alerta = "" if 0 <= (c["DataHora"] - agora).total_seconds() <= 3600: # 17: alerta 1h antes alerta = " ⏰ (Em breve!)" listbox.insert(tk.END, f"{i+1}. {c['Descrição']} - {c['Data']} {c['Hora']}{alerta}") # 18: exportar agenda para Excel def exportar_excel(): if not compromissos: messagebox.showwarning("Aviso", "Nenhum compromisso para exportar!") return df = pd.DataFrame(compromissos) df.drop(columns=["DataHora"], inplace=True) # 19: remove coluna técnica df.to_excel("agenda_compromissos.xlsx", index=False) messagebox.showinfo("Sucesso", "Agenda salva como agenda_compromissos.xlsx") # 20: interface gráfica root = tk.Tk() root.title("Agenda de Compromissos Empresarial") root.geometry("750x500") # 21: 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="Data (DD/MM/AAAA):").pack(anchor="w", padx=10) entry_data = tk.Entry(root, width=20) entry_data.pack(anchor="w", padx=10, pady=5) tk.Label(root, text="Hora (HH:MM):").pack(anchor="w", padx=10) entry_hora = tk.Entry(root, width=20) entry_hora.pack(anchor="w", padx=10, pady=5) # 22: botões btn_add = tk.Button(root, text="Adicionar Compromisso", command=adicionar_compromisso, bg="#4CAF50", fg="white") btn_add.pack(pady=5) btn_export = tk.Button(root, text="Exportar para Excel", command=exportar_excel, bg="#2196F3", fg="white") btn_export.pack(pady=5) # 23: lista de compromissos listbox = tk.Listbox(root, width=100, height=15) listbox.pack(padx=10, pady=10) root.mainloop() # 24: mantém a janela aberta

Explicação linha por linha 🧾

  • 1 a 4: importamos bibliotecas para interface, Excel e datas.

  • 5: criamos a lista de compromissos.

  • 6 a 14: função que cadastra compromissos e valida dados.

  • 15 a 17: função que exibe compromissos e mostra alerta se faltar menos de 1h.

  • 18 a 19: exporta a lista para um arquivo Excel.

  • 20 a 23: cria a interface gráfica com campos, botões e lista.

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


Como usar ✅

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

  2. Instale as dependências:

pip install pandas openpyxl
  1. Execute o programa:

python agenda_compromissos.py
  1. Na janela que abrir:

    • Digite a descrição do compromisso.

    • Informe a data no formato DD/MM/AAAA.

    • Informe a hora no formato HH:MM.

    • Clique em Adicionar Compromisso.

    • Clique em Exportar para Excel para salvar em agenda_compromissos.xlsx.


Possíveis melhorias futuras 🔧

  • Notificação sonora ou popup de alerta.

  • Filtros por período (ex: compromissos da semana).

  • Integração com Google Agenda.

  • Relatórios mensais em Excel.


🚀 Conclusão

Com esta Agenda de Compromissos em Python, sua empresa nunca mais perderá prazos ou reuniões. É uma ferramenta simples, mas muito poderosa para organização diária.


📢 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 organize sua empresa com eficiência também na contabilidade! 🤝

Nenhum comentário:

Postar um comentário