1. Criando a interface para trabalhar com relatórios
Então, galera, chegou a hora de mergulhar no design e desenvolvimento de uma interface que nos permita não só reunir dados, mas também apresentá-los de uma forma compreensível e, o mais importante, bonita. Hoje vamos criar um aplicativo que faz com que gerar e visualizar relatórios seja tão fácil quanto programar em Python depois de uma xícara de café forte!
Construindo a interface para selecionar e exibir relatórios
Vamos começar criando uma interface onde o usuário pode escolher os relatórios para exibição. A interface terá botões para carregar dados, menus suspensos para selecionar diferentes relatórios e uma área para exibir gráficos.
import tkinter as tk
from tkinter import ttk
# Criando a janela principal
root = tk.Tk()
root.title("Relatórios e Dados")
# Adicionando um menu suspenso para selecionar o relatório
report_label = ttk.Label(root, text="Escolha o relatório:")
report_label.pack(pady=10)
report_options = ["Relatório nº1", "Relatório nº2", "Relatório nº3"]
selected_report = tk.StringVar(value=report_options[0])
report_menu = ttk.Combobox(root, textvariable=selected_report, values=report_options)
report_menu.pack(pady=10)
# Inicia o loop principal do aplicativo
root.mainloop()
Ao executar o código acima, você verá uma janela simples onde pode selecionar um dos relatórios disponíveis. Embora os gráficos ainda não sejam exibidos, esta é a base sobre a qual construiremos a funcionalidade do aplicativo.
2. Integração com bibliotecas gráficas
Usando Matplotlib para exibir gráficos no aplicativo
Vamos aos gráficos. Para visualizá-los, usaremos a popular biblioteca Matplotlib. Essa biblioteca é ótima para exibir dados e pode ser integrada a um aplicativo baseado em Tkinter. Primeiro, certifique-se de que a biblioteca está instalada:
pip install matplotlib
Agora, vamos adicionar um gráfico à nossa interface, usando FigureCanvasTkAgg para integrar com o Tkinter.
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
# Criando a área para os gráficos
def plot_report():
# Criando um gráfico de teste
fig = Figure(figsize=(5, 4), dpi=100)
plot = fig.add_subplot(111)
plot.plot([1, 2, 3, 4, 5], [2, 3, 5, 7, 11]) # Exemplo de dados
# Integrando o gráfico ao aplicativo Tkinter
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack()
# Adicionando botão para criar o gráfico
plot_button = ttk.Button(root, text="Gerar Relatório", command=plot_report)
plot_button.pack(pady=20)
Usando o exemplo acima, você pode exibir um gráfico simples ao clicar no botão "Gerar Relatório". Claro, isso é apenas o começo. Na prática, você substituirá esse gráfico simples por dados reais dos relatórios.
3. Aplicação prática
Criando um aplicativo para gerar e exibir relatórios com integração de gráficos e dados
Agora que temos a base da nossa interface com gráficos, podemos explorar como representar dados de uma forma mais complexa e funcional. Para isso, você pode integrar dados de seus arquivos Excel ou CSV processados, bem como exibir qualquer formato de visualização adequado à sua aplicação.
import pandas as pd
import random
def load_data():
# Exemplo de geração de dados aleatórios
data = pd.DataFrame({
"x": list(range(1, 11)),
"y": [random.randint(1, 10) for _ in range(10)]
})
return data
def plot_data_report():
data = load_data()
fig = Figure(figsize=(5, 4), dpi=100)
plot = fig.add_subplot(111)
plot.plot(data['x'], data['y'])
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()
canvas.get_tk_widget().pack()
plot_button.config(command=plot_data_report)
Exportando relatórios e dados da interface para vários formatos para uso posterior
Para que o aplicativo não seja apenas demonstrativo, mas também útil, é importante implementar a capacidade de exportar dados. Por exemplo, para um arquivo PDF ou Excel, o que permitirá compartilhar relatórios com colegas ou chefes:
from tkinter import filedialog
import matplotlib.pyplot as plt
def export_report():
# Gerando os dados e criando o gráfico
data = load_data()
fig, ax = plt.subplots()
ax.plot(data['x'], data['y'])
# Selecionando o local para salvar
file_path = filedialog.asksaveasfilename(defaultextension=".pdf",
filetypes=[("Arquivos PDF", "*.pdf"), ("Todos os Arquivos", "*.*")])
if file_path:
fig.savefig(file_path)
print(f"Relatório salvo em {file_path}")
# Adicionando botão para exportar
export_button = ttk.Button(root, text="Exportar Relatório", command=export_report)
export_button.pack(pady=10)
A função export_report permite selecionar em qual arquivo salvar o gráfico, salvando-o no formato especificado. Agora, seu aplicativo não apenas visualiza dados, mas também oferece a opção de armazená-los de forma conveniente.
Assim, você aprendeu como criar uma interface para trabalhar com relatórios, integrá-la com gráficos usando Matplotlib e adicionar funcionalidade de exportação. Na prática, essas habilidades são extremamente úteis para desenvolver ferramentas de automação de relatórios, análise de dados e apresentação de dados de forma fácil de entender. Espero que vocês tenham gostado! E lembrem-se, a mágica real da programação acontece quando o código ganha vida na forma de uma ferramenta útil.
GO TO FULL VERSION