3 pontos por GN⁺ 2023-12-10 | 1 comentários | Compartilhar no WhatsApp

Transformando programas de console em Python em aplicativos GUI com o Gooey

  • Gooey é uma ferramenta que converte programas de console em Python 3 em aplicativos GUI fáceis de usar.
  • Em vez do prompt de comando, ele oferece uma GUI, tornando o programa mais fácil de usar e mais bonito.
  • É útil ao criar scripts para usuários não programadores ou utilitários para tarefas como movimentação de dados.

Como o Gooey funciona

  • O Gooey se conecta ao código adicionando um decorador ao método que contém a declaração argparse.
  • Durante a execução, ele faz o parsing do script Python, extrai a referência a ArgumentParser e monta a GUI.
  • É possível controlar com mais precisão os widgets exibidos na GUI usando GooeyParser.

Internacionalização do Gooey

  • O Gooey pode ser traduzido facilmente para vários idiomas e atualmente inclui mais de 18 traduções.
  • Adicionar suporte a um novo idioma é tão simples quanto incluir pares chave/valor no diretório gooey/languages/.

Configuração global do Gooey

  • A aparência geral e a experiência de uso do Gooey podem ser personalizadas passando argumentos para o decorador.
  • É possível personalizar vários componentes, como codificação, idioma, tamanho inicial e configurações de fonte.

Personalização de layout do Gooey

  • O Gooey oferece um layout flexível com algumas personalizações simples.
  • Ele fornece várias opções de layout, como exibir ou não a barra lateral e usar grupos de abas.

Modos de execução do Gooey

  • O Gooey oferece vários modos de exibição que permitem ajustar o layout de acordo com o tipo de conteúdo e o nível de experiência do usuário.
  • Com os modos avançado, básico e sem configuração, é possível oferecer uma GUI sob medida para diferentes necessidades.

Menus do Gooey

  • É possível adicionar grupos e itens de menu personalizados à barra de menus do Gooey.
  • Ele oferece suporte a vários tipos de opções de menu para exibir informações do programa, caixas de diálogo de mensagem, links e mais.

Validação dinâmica do Gooey

  • Antes de enviar a entrada do usuário ao programa, o Gooey pode executar opcionalmente uma validação prévia para garantir que todos os argumentos passem na verificação.

Eventos de ciclo de vida e controle da UI no Gooey

  • O Gooey oferece hooks de ciclo de vida que permitem realizar ações adicionais após a execução bem-sucedida ou com falha do programa e controlar o estado atual da UI.

Exibição de progresso no Gooey

  • O Gooey pode atualizar o estado da barra de progresso com base em atualizações de progresso em texto.
  • É possível informar o progresso ao Gooey por meio de expressões regulares e expressões de avaliação personalizadas.

Personalização de ícones do Gooey

  • O Gooey oferece a capacidade de substituir os ícones padrão por imagens/ícones personalizados.
  • É possível especificar um diretório de imagens personalizado por meio do argumento image_dir.

Empacotamento do Gooey

  • Empacotar o Gooey como executável é muito fácil, e você pode usar o pyinstaller para agrupar o aplicativo em um executável pronto para uso.

Opinião do GN⁺

O ponto mais importante deste texto é que o Gooey permite transformar facilmente programas de console em Python em aplicativos GUI. Isso pode tornar os programas mais amigáveis e acessíveis para usuários não programadores, permitindo que os desenvolvedores se concentrem na lógica sem se preocupar com a interface. As várias configurações e opções de personalização do Gooey oferecem uma escolha atraente para desenvolvedores e podem contribuir bastante para reduzir a barreira de entrada no desenvolvimento de GUIs.

1 comentários

 
GN⁺ 2023-12-10
Comentários no Hacker News
  • Explicação do desenvolvedor sobre o projeto Gooey

    • Gooey é um projeto antigo; quando começou, argparse era uma escolha sólida.
    • Hoje o Gooey usa JSON e está desacoplado de argparse.
    • argparse continua sendo a interface principal, mas não há muitas alternativas adequadas.
    • Com o Gooey, é possível chamar não só Python, mas também executáveis arbitrários.
    • Sobre o fato de o último commit ter sido há 2 anos, há um lamento de que, com a idade e a mudança de prioridades, ficou difícil justificar trabalhar em software de graça.
  • Discussão sobre a relação entre Gooey e argparse

    • argparse serve bem para tarefas simples, mas existem muitas CLIs baseadas em Click, além de bibliotecas populares de CLI construídas sobre Click.
    • Não está claro se há compatibilidade com Click; se ficar restrito apenas a argparse, a expressão "quase todos" pode não ser precisa.
    • Apesar de haver issues abertas que não passam muita confiança no projeto, a ideia em si continua interessante.
  • Links para discussões anteriores sobre o Gooey

    • São fornecidos links informando que houve discussões sobre o Gooey no Hacker News em junho de 2021 e agosto de 2014.
  • Opinião desejando que sistemas operacionais e shells consigam executar programas melhor

    • Há a esperança de que os programas possam se comunicar em formato JSON/protocolo para melhorar a estrutura de comandos do shell ou a GUI.
    • Hoje, o cenário é de exportação de arquivos de autocompletar do shell, vários estilos de flags e bibliotecas de parsing, e ausência de GUI.
  • Apresentação do framework Textual

    • É apresentado o framework Textual, que permite criar interfaces de usuário em Python com uma API simples, executadas no terminal e no navegador web.
  • Pergunta sobre uma versão com GUI para o ffmpeg

    • É manifestado interesse em uma ferramenta que ofereça os parâmetros do ffmpeg por meio de uma GUI.
  • Pergunta sobre como integrar o Gooey com ferramentas CLI que esperam entrada do usuário

    • Há interesse em como adicionar uma GUI a um script de bisect para depuração de engine de jogo, ajudando o usuário a diagnosticar o problema.
  • Interesse em uma ferramenta que converta de GUI para CLI

    • Em sentido inverso, há o desejo por uma ferramenta que converta GUI em CLI.
  • Menção ao conceito Naked Objects

    • É explicado o Naked Objects, ideia em que, ao definir classes Java e anotações, uma GUI ou frontend web é gerado automaticamente.
  • Curiosidade sobre se o Gooey poderia gerar apps web

    • Há curiosidade sobre se o Gooey pode gerar um app web sem React ou JS.
    • Também é mencionada uma comparação com o Python Script Server, ferramenta low-code que coloca um frontend web na frente de programas CLI.