readme
Lancher GUI ONS PLC
🔗 Link Obsidian: [[CODING_SUMARIO|Voltar ao Sumário de CODING]]
Clone do sistema de gestão de programas da PL do ONS
Estrutura do Projeto
✅ PySide6 com .ui (Qt Creator padrão) ✅ Arquitetura MVVM limpa ✅ Componentes reutilizáveis ✅ Paleta escura profissional ✅ Cards clicáveis (tipo imagem) ✅ Abrir links / HTML ✅ CLI com rich integrada
syspl_launcher/
├── main.py ← app principal (rode este)
├── page.ui ← layout visual (abra no Qt Designer)
└── README.md ← este guia
1. Instalação
pip install PyQt6
2. Rodar o app direto
python main.py
Pronto. O main.py já tem tudo embutido — não precisa do .ui para rodar.
3. Como usar o Qt Designer (passo a passo)
3.1 Abrir o Qt Designer
Windows (se instalou via pip):
python -m PyQt6.uic.pyuic --version # confirma instalação
pyqt6-tools designer # abre o Qt Designer
Se pyqt6-tools não estiver instalado:
pip install pyqt6-tools
pyqt6-tools designer
Alternativa universal:
# Localiza o executável
python -c "import PyQt6; import os; print(os.path.dirname(PyQt6.__file__))"
# Navega até essa pasta e abre o designer.exe (Windows) ou designer (Linux)
3.2 Abrir o page.ui
- Abra o Qt Designer
- Menu File → Open
- Selecione o arquivo
page.ui - Você verá a janela principal com o layout montado
3.3 Estrutura de widgets (objectNames importantes)
| Widget | objectName | Função |
|---|---|---|
| QMainWindow | MainWindow | Janela raiz |
| QWidget | central_widget | Widget central obrigatório do QMainWindow |
| QFrame | header_frame | Barra do topo com logo e usuário |
| QScrollArea | scroll_area | Área rolável com todos os cards |
| QWidget | content_widget | Container interno do scroll |
| QWidget | section_sep | Seção ⚡ Sistemas Elétricos |
| QWidget | section_web | Seção 🌐 Websites |
| QWidget | section_apps | Seção 🖥️ Apps Desktop |
| QWidget | section_pbi | Seção 📊 Power BI |
Regra: nunca mude os objectNames — o
main.pyusa alguns deles para referência.
3.4 Editar visualmente um card no Qt Designer
Os cards (ProjectCard) são criados dinamicamente pelo main.py.
No .ui estão apenas os containers das seções (os QHBoxLayout de cada seção).
Para adicionar um novo card visualmente:
- No Qt Designer, localize o
cards_sep_layout(seção que quer editar) - Arraste um
QFramepara dentro dele - Dentro do QFrame, adicione:
QVBoxLayout→QLabel(emoji) +QLabel(nome) +QPushButton(Abrir) - Defina o objectName como
card_nome_do_projeto
Mas o caminho mais rápido é editar o dicionário PROJETOS no main.py — os cards são gerados automaticamente.
3.5 Gerar o código Python a partir do .ui
Se você fizer edições visuais no Qt Designer e quiser exportar para Python:
pyuic6 page.ui -o page_ui.py
Depois importa no main.py:
from page_ui import Ui_MainWindow
class SysPLLauncher(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
# seu código aqui
4. Adicionar novos projetos
Edite o dicionário PROJETOS no topo do main.py:
{
"nome": "Meu Novo Projeto",
"emoji": "🚀",
"descricao": "Breve descrição do projeto",
"tipo": "web", # web | html | script | pasta | github
"acao": "https://...", # URL ou caminho local
"versao": "v1.0",
"github": "https://github.com/...",
"status": "dev" # online | local | dev | ons
},
Tipos de ação
| tipo | o que faz |
|---|---|
web | abre no navegador |
github | abre o repositório no navegador |
html | abre arquivo .html local no navegador |
script | abre a pasta no explorador de arquivos |
pasta | abre a pasta no explorador de arquivos |
5. Monitorar versões e GitHub
O card mostra a versão (versao) e tem um botão GitHub que abre o repositório.
Para monitorar automaticamente (futuro), você pode usar a GitHub API:
import requests
def get_latest_release(repo: str) -> str:
"""repo = 'PedroVic12/Pikachu-Flask-Server'"""
url = f"https://api.github.com/repos/{repo}/releases/latest"
r = requests.get(url)
if r.status_code == 200:
return r.json().get("tag_name", "—")
return "—"
6. Próximos passos sugeridos
- Integrar GitHub API para puxar versão e último commit de cada repo
- Adicionar campo de busca no header para filtrar projetos
- Botão de refresh para verificar se sites estão online (requests + status code)
- Salvar projetos em
projetos.jsonpara editar sem mexer no código - Notificação de novo commit/release no systray do Windows