Pergunta

Estou aprendendo python há algum tempo com algum sucesso.Até consegui criar um ou dois programas (simples) usando PyGtk + Glade.

A coisa é:Não tenho certeza se a melhor maneira de usar GTK com python é construindo interfaces usando Glade.

Eu queria saber se os mais experientes entre nós (lembre-se, sou apenas um iniciante) poderiam apontar os benefícios e advertências de usar o Glade em vez de criar tudo no próprio código (assumindo que aprender as ligações corretas do gtk não seria exatamente um problema).

Foi útil?

Solução

Eu diria que depende:se você achar que usando o Glade você pode criar os aplicativos que deseja ou precisa criar, então tudo bem.Se, no entanto, você realmente quiser aprender como o GTK funciona ou tiver alguns requisitos de UI não padrão, você ter para se aprofundar nos detalhes internos do GTK (que não são tão complicados).

Pessoalmente, geralmente estou em um cliente rico em cerca de 5 minutos quando preciso de algum recurso ou personalização que é simplesmente impossível através de um designer como Glade ou Estético.Talvez seja só eu.No entanto, ainda é útil inicializar o design da janela usando uma ferramenta gráfica.

Minha recomendação:se ganhar clientes ricos usando GTK for uma parte significativa do seu trabalho/hobby, então aprenda GTK também, já que você vai preciso escrever esse código algum dia.

P.S.Eu pessoalmente acho Estético ser superior ao Glade para trabalhos de design, embora um pouco mais instável.

Outras dicas

Use GtkBuilder em vez de Glade, ele está integrado ao próprio Gtk em vez de uma biblioteca separada.

O principal benefício do Glade é que é muito, muito mais fácil criar a interface.É um pouco mais trabalhoso conectar manipuladores de sinal, mas nunca achei que isso importasse muito.

Glade é muito útil para criar interfaces, o que significa que você pode alterar facilmente a GUI sem precisar codificar muito.Você descobrirá que se quiser fazer algo útil (por exemplo,construir uma treeview) você terá que se familiarizar com várias partes da documentação do GTK - na prática, encontrar um bom tutorial/exemplos.

Comecei usando o glade, mas logo passei a fazer tudo em código.Glade é bom para coisas simples e é bom quando você está aprendendo como o GTK organiza os widgets (como as coisas são compactadas, etc.).Construindo tudo em código, entretanto, você tem muito mais flexibilidade.Além disso, você não tem a dependência do glade.

Normalmente começo com o Glade até chegar a um ponto em que ele não possui os recursos necessários, por exemplo.criando um assistente.Contanto que eu esteja usando os widgets padrão fornecidos pelo Glade, não há realmente nenhuma razão para codificar manualmente a GUI.

Quanto mais confortável fico com a forma como o Glade formata o código, melhor se torna minha codificação manual.Sem mencionar que é muito fácil usar o Glade para criar a estrutura subjacente, para que você não precise se preocupar com todas as inicializações.

Se você estiver escrevendo um aplicativo GUI tradicional que reutiliza muitos componentes padrão do GTK+ (botões, rótulos, contêineres etc.), eu pessoalmente escolheria Glade + Kiwi (uma estrutura conveniente para construir aplicativos GUI GTK+).

A maior vantagem de usar o Glade é que ele reduz bastante o código de layout/empacotamento.Aqui está um exemplo extremamente simples que já mostra os problemas com o layout manual de uma GUI (sem usar nenhuma função auxiliar):

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

Para mais exemplos, pegue um olhe aqui.Mesmo se você estiver escrevendo um widget personalizado complicado, você sempre pode criar um espaço reservado no Glade e substituí-lo após a instanciação.

Não deve demorar muito para a equipe do Glade lançar uma nova versão do designer (3.6.0).Esta nova versão adicionará suporte para GtkBuilder, que substitui libglade (a biblioteca real que transforma os arquivos XML do Glade em uma árvore de widgets).O novo designer Glade também adiciona mais uma vez suporte para definição de catálogos (conjuntos de widgets) em Python, para que você possa adicionar facilmente seus próprios widgets personalizados.

Eu recomendo usar o Glade para desenvolvimento rápido, mas não para aprendizado.Por que?porque algumas vezes você precisará ajustar alguns widgets para funcionar como você deseja, e se você realmente não conhece/entende os atributos de propriedades de cada widget, então você terá problemas.

Para telas rápidas e simples eu uso o Glade.Mas para qualquer coisa que precise de níveis mais refinados de controle, eu crio classes personalizadas para o que realmente preciso (isso é importante, porque é muito fácil se deixar levar por generalizações).

Com classes específicas de aplicativos finos, posso alterar rapidamente a aparência do aplicativo em um único lugar.É como usar CSS para manter a consistência de sites.

Pessoalmente, eu recomendaria codificá-lo em vez de usar o Glade.Ainda estou aprendendo python e pyGtk, mas direi que escrever a interface do usuário manualmente me deu muitos insights sobre como as coisas funcionam nos bastidores.

Depois de aprender, eu diria para dar uma chance ao glade ou a outros designers de UI, mas definitivamente aprenda como fazer isso da maneira "difícil" primeiro.

Primeiro, comece a colocar isso em perspectiva.

Você usará GTK.Esta é uma enorme biblioteca C construída em 1993 usando as melhores tradições do estilo de codificação dos anos 1970.Ele foi construído para ajudar a implementar o GIMP, um aspirante a concorrente do Photoshop com erros lendários na interface do usuário.Um campo gui típico pode ter quarenta ou mais parâmetros, em sua maioria repetitivos, com getters e setters.Haverá dor.

O próprio GTK gerencia um sistema completo de tipos dinâmicos em C usando GObject.Isso torna a depuração uma alegria especial, pois requer percorrer manualmente matrizes de ponteiros para métodos cheios de listas de argumentos genéricos com herança implícita.Você também estará navegando pelas bibliotecas Pango quando menos esperar, por exemplo, usando uma constante Pango para saber onde as reticências vão em um rótulo quando a página é pequena.Espere mais dor.

Até agora, você provavelmente está prometendo agrupar todas as suas interações GTK em uma arquitetura Model-View-Controller específica para sua aplicação.Isso é bom.

Usar Glade, ou gtkBuilder, ou Stetic, ajudará a resolver o enorme problema de acoplamento de quarenta parâmetros a uma função.Glade fornece um construtor de GUI básico para arrastar e soltar componentes juntos.Os parâmetros e os parâmetros herdados estão um tanto separados.A saída do Glade é o arquivo XML .glade que você lerá, anexará seus retornos de chamada ("manipuladores de sinal") a funções com nomes idênticos e consultará ou atualizará a versão na memória desse XML para obter widgets que você usará pyGTK manipular.Glade em si é barulhento e não está bem conservado.

Usar o pyGTK oferece um controle irritantemente refinado para construir sua GUI.Este será um código detalhado de copiar e colar.Cada atributo será uma chamada de função separada.O setter de atributos não retorna nada, então encadear as chamadas está fora de questão.Normalmente, seu IDE fornecerá apenas uma ajuda mínima sobre o significado das funções e você estará constantemente consultando o DevHelp ou alguma outra ferramenta.

Quase se esperaria que as GUIs GTK fossem destinadas a falhar.

Você pode usar o glade-2 para projetar e usar glade2py.py Para gerar o código pygtk puro, ele usa pygtkcompat para suportar gtk3

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top