Biblioteca para padronização da interface gráfica (UI) nos programas do Tesouro do Estado do Rio de Janeiro
Project description
Tesouro EOP UI Library 🎨
Biblioteca genérica de interface gráfica para aplicações CustomTkinter.
Desenvolvida para padronizar e acelerar a criação de ferramentas e automações. A eop_ui encapsula toda a lógica repetitiva de UI (configuração de janela, gerenciamento de fontes, telas de login, logs de execução, barras de progresso e modais de mensagem), permitindo que você foque inteiramente na lógica de negócio da sua aplicação.
✨ Funcionalidades
- ⚙️ Configuração Centralizada: Toda a parametrização visual e de comportamento é feita através de um único objeto (
AppConfig). - 🔐 Tela de Login Integrada: Validação automática de campos, suporte a subtítulos de aviso e callbacks simplificados.
- 💻 Tela de Execução: Interface pronta para rotinas longas, com log de texto em tempo real (com timestamps) e barra de progresso determinada.
- 🧭 Navegação e Menus: Botão de voltar embutido, menu superior nativo (com atalhos para Sobre e Manual de Uso) e fácil expansão.
- 🎨 Design Padronizado: Cores, tipografia e espaçamentos consistentes, baseados no tema dark-blue do CustomTkinter em modo Light.
📦 Instalação e Dependências
Certifique-se de ter o Python 3.8+ instalado. Para instalar as dependências necessárias, execute:
pip install -r requirements.txt
Dependências principais:
customtkinterPillow(para renderização de logos e ícones)
🚀 Uso Rápido (Quick Start)
Para utilizar a biblioteca, basta importar as classes base, configurar seus parâmetros através do AppConfig e herdar o comportamento no seu app com BaseApp.
from eop_ui import AppConfig, BaseApp
class MeuApp(BaseApp):
def __init__(self):
# 1. Defina as configurações da sua aplicação
cfg = AppConfig(
app_name="Extrator de Relatórios SIAFE",
developer_info="EOP / SUPCONC - Tesouro Estadual",
login_subtitle="⚠️ Use suas credenciais de rede"
)
# 2. Inicialize a classe base com a configuração
super().__init__(cfg)
# 3. Chame a tela inicial desejada
self.show_login_frame(on_success=self.iniciar_processamento)
def iniciar_processamento(self, usuario, senha):
# Transição para a tela de execução após o login
self.show_execution_frame(initial_msg=">>> Autenticado com sucesso. Iniciando rotina...")
# Exemplo de uso do log e progresso
self.log(f"Usuário logado: {usuario}")
self.update_progress(0.5, "Baixando dados... (50%)")
# Finalização
self.finalize_progress(
label="Concluído!",
title="Sucesso",
message="Os relatórios foram extraídos com sucesso."
)
if __name__ == "__main__":
app = MeuApp()
# Garante o encerramento seguro (encerra processos em background se houver)
app.protocol("WM_DELETE_WINDOW", app.safe_exit)
app.mainloop()
🏗️ Estrutura Principal
AppConfig
Um dataclass que concentra os parâmetros da sua interface. Ao invés de espalhar self.geometry, self.title ou caminhos de arquivos pelo código, você define tudo aqui.
- Identidade:
app_name,app_version,developer_info. - Caminhos:
icon_filename,image_filename,manual_filename. Os caminhos são resolvidos automaticamente com base no diretório de execução. - Login: Controle granular sobre a tela de acesso (ex:
user_digits_only=True,user_max_length=11).
BaseApp
A janela principal (herda de ctk.CTk). Implementa métodos facilitadores:
- Telas:
show_login_frame(),show_execution_frame(),clear_frame(). - Feedback Visual:
update_progress(),log(),reset_progress(),finalize_progress(). - Modais:
messagebox_info(),messagebox_warning(),messagebox_error(),messagebox_question(). - Componentes:
make_primary_button(),make_success_button(),make_header_label().
📂 Padrão de Diretórios Esperado
Por padrão (caso você não altere os caminhos no AppConfig), a biblioteca espera a seguinte estrutura no diretório do seu script principal:
meu_projeto/
├── main.py # Seu script executável
├── Manual de Uso.pdf # Manual aberto pela tecla F2
└── img/
├── icon.ico # Ícone da janela
├── tesouro.png # Logo exibido na tela de login
└── voltar.png # Ícone do botão de voltar
Dica: Se os arquivos de imagem ou o manual não forem encontrados, a UI simplesmente se adapta e os oculta de forma silenciosa, sem quebrar a aplicação.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tesouroeop_ui-1.0.3.tar.gz.
File metadata
- Download URL: tesouroeop_ui-1.0.3.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bd8505ff3ae221975103b286d1cd1f5343e4b711c05acf35e6806856c0499a1
|
|
| MD5 |
200020a0d1872dcc710f1a1a54b5157a
|
|
| BLAKE2b-256 |
28f4716ec44746cff468847a4372cefe95dfc31fce33e2833cb2c9479d0ba3af
|
File details
Details for the file tesouroeop_ui-1.0.3-py3-none-any.whl.
File metadata
- Download URL: tesouroeop_ui-1.0.3-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8abe2e39922d8cf7dad35e2f7988c0372f9c9368e723105a33eae2112c7a3640
|
|
| MD5 |
a61adaaeb2f9777651962bd5d1377aa1
|
|
| BLAKE2b-256 |
f7885fe5e93bf7f530746281d7e0627a838e0c8b9a7cc191740082ae08c2ad9c
|