PV

readme

estudos-uff-2026-1 • 09/06/2026

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

  1. Abra o Qt Designer
  2. Menu File → Open
  3. Selecione o arquivo page.ui
  4. Você verá a janela principal com o layout montado

3.3 Estrutura de widgets (objectNames importantes)

WidgetobjectNameFunção
QMainWindowMainWindowJanela raiz
QWidgetcentral_widgetWidget central obrigatório do QMainWindow
QFrameheader_frameBarra do topo com logo e usuário
QScrollAreascroll_areaÁrea rolável com todos os cards
QWidgetcontent_widgetContainer interno do scroll
QWidgetsection_sepSeção ⚡ Sistemas Elétricos
QWidgetsection_webSeção 🌐 Websites
QWidgetsection_appsSeção 🖥️ Apps Desktop
QWidgetsection_pbiSeção 📊 Power BI

Regra: nunca mude os objectNames — o main.py usa 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:

  1. No Qt Designer, localize o cards_sep_layout (seção que quer editar)
  2. Arraste um QFrame para dentro dele
  3. Dentro do QFrame, adicione: QVBoxLayout → QLabel (emoji) + QLabel (nome) + QPushButton (Abrir)
  4. 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

tipoo que faz
webabre no navegador
githubabre o repositório no navegador
htmlabre arquivo .html local no navegador
scriptabre a pasta no explorador de arquivos
pastaabre 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.json para editar sem mexer no código
  • Notificação de novo commit/release no systray do Windows