Existem bons kits de ferramentas de interface do usuário para o Pygame? [fechadas]

8

Existem kits de ferramentas de widgets bons e modernos para o Pygame? Eu olhei para o PGU , mas aparentemente não é mantido.

Nathon
fonte

Respostas:

11

Não. Todos os anos, alguém cria uma nova biblioteca de interface do usuário do Pygame e a abandona após algumas versões, provavelmente depois que percebe que escrever layouts de botões é fácil, mas escrever uma biblioteca da interface do usuário completa é um trabalho real. A guitag no site do Pygame mostra algumas delas.


fonte
8

Em janeiro de 2011, observei cinco kits de ferramentas da GUI para pygame e tentei trabalhar com todos eles com o Python 3. Os cinco eram: Albow, GooeyPy, PGU, pqGUI e sgc.

Não tive sucesso com o GooeyPy , mas consegui que os outros quatro trabalhassem com o Python 3. (eu também queria experimentar a poutine, de Shandy Brown, mas não consegui encontrá-la e ignorei completamente a Ocemp.)

Infelizmente, Albow e Ocemp parecem praticamente mortos. O Albow foi atualizado pela última vez em 2009 e o Ocemp foi atualizado pela última vez em 2008. (Observe que a versão do Albow em pygame.org não é a mais recente.)

O PGU (Phil's Pygame Utilities) foi assumido e mantido por Peter Rogers, e Victor Kam converteu a maior parte para o Python 3. Ele foi atualizado pela última vez em janeiro de 2012 e, presumivelmente, foi aprimorado desde que o examinei. (Observe que a versão do PGU em pygame.org não é a mais recente.)

sgc era novo e ainda muito incompleto quando olhei para ele. No entanto, ele está sendo desenvolvido ativamente e pode ser muito melhorado até agora. (Observe que a versão do sgc em pygame.org não é a mais recente.)

Executei cada um dos cinco através de um simples contador de linhas de código para medir seus tamanhos:

Estes foram os resultados (em janeiro de 2011):

    Código do albow min = 2810, max = 4551 (max = 162% do min)
    Cotovelo \ demo min = 453, max = 649

    GooeyPy \ gooeypy min = 2034, max = 3941 (max = 194% do min)
    GooeyPy \ exemplos min = 178, max = 351

    pgu \ pgu min = 2910, max = 7047 (max = 242% do min)
    incl. pgu \ pgu \ gui min = 1678, max = 4638 (max = 276% do min)
    pgu \ exemplos min = 822, max = 2527

    pqGUI.py min = 1586, máx = 1834 (máx = 116% do min)
    Exemplo.py min = 178, max = 225

    sgc (incompleto) min = 889, máx = 1243 (máx = 140% do min)

Em cada caso, o número "min" é mais representativo do "tamanho" do kit de ferramentas, pois não conta com espaço em branco e comentários. Quando o número "max" está muito próximo do número mínimo, significa que não há muito espaço em branco nem muitos comentários no código. O pqGUI exemplifica isso, porque quase não possui comentários (e também nenhuma documentação), o que é muito ruim, porque (IMO) criou os elementos da GUI mais bonitos.

Advertência principal: as doutrinas não são contadas como comentários! Isso faz com que o PGU, sgc e GooeyPy, que possuem docstrings, pareçam mais gordos e menos documentados do que realmente são, em comparação com o Albow e o pqGUI, que não possuem docstrings.

Gostei do pqGUI porque gostei da aparência dos widgets que ele faz, mas não é suportado e não está documentado, e não consegui encontrar o autor.

Dos cinco, em janeiro de 2011, o PGU era o líder claro. Mas eu estava insatisfeito com os cinco, então escrevi o meu. (Nota: PGU e sgc foram atualizados e, presumivelmente, aprimorados, desde que os examinei.)

Pela observação irônica de Joe Wreschnig (acima), meu kit de ferramentas da GUI está incompleto, como todos os outros. Mas tem algumas coisas a seu favor.

  • Funciona com Python 2.6, 2.7, 3.1, 3.2 e, presumivelmente, 3.3.
  • Ele é baseado em sprites e usa eventos de pygame para comunicação, para que possa ser facilmente inserido em um programa existente de pygame, sem assumir o controle do loop de eventos. Os widgets são subclassificados de pygame.sprite.Sprite.
  • Ele suporta formulários, botões, caixas de seleção, caixas de mensagens e caixas de diálogo modais e não-modais, menus verticais, caixas de entrada de texto e controles deslizantes (barras de rolagem).
  • Ele lida facilmente com controles / widgets sobrepostos, movendo e redimensionando widgets e formulários em formulários.

No entanto, faltam alguns controles importantes que você provavelmente deseja, como caixas de diálogo para abrir arquivos / caixas de combinação e tabelas. Os controles existentes parecem bons, mas recursos como barras de título e barras de rolagem são números fixos de pixels em largura, em vez de largura ajustável. O código é bem comentado e há um aplicativo de demonstração com exemplos de uso, mas não há documentação adequada sobre como usar. Além disso, é pré-beta, então tudo está sujeito a alterações.

Os resultados do contador de linha de código são:

    DavesGUI (com código de demonstração) min = 2267, max = 3055 (max = 135% do min)
     (sem código de demonstração) min = 2018, máx = 2644 (máx = 131% do min)
     (com doutrinas comentadas) min = 1442, máx = 2644 (máx = 183% do min)

Se, apesar dessas limitações, alguém quiser experimentar, entre em contato comigo por e-mail. Pergunte sobre "DavesGUI". Meu endereço de e-mail está aqui: http://www.burtonsys.com/email/

Dave Burton
fonte
1

Vi recentemente o pygtk usado com o pygame e funciona muito bem. Apenas certifique-se de usar o evento expor com o widget da área de desenho gtk e atualize os dados do pygame em cada passagem no loop principal do gtk. Se você deseja que um kit completo de ferramentas da GUI funcione no pygame, isso não acontecerá, mas se você deseja que um kit completo de ferramentas da GUI use com o pygame, então está com sorte, o pygtk é isso. Você pode até usar o gtk usando a linguagem de programação C e ainda importar o pygame como um widget para a área de desenho e atualizar o pygame em python se isso flutuar no seu barco e você desejar velocidade turbo. Por que a confusão, basta usar o google e encontrar a resposta, em seguida, implementá-lo, não é difícil e não é nada demais. Aliás pygame é muito legal. Esses caras colocaram tanto trabalho nisso, e ele funciona com tanta eficiência que é incrível.

kong
fonte
0

Adicionei elementos GUI muito básicos à minha biblioteca GameEngine: http://aharrisbooks.net/pythonGame/ch10/ (incluído em um livro sobre desenvolvimento de jogos em Python)

Criei elementos GUI muito simples com base no sprite padrão: um rótulo, botão, rótulo de várias linhas e mini-barra de rolagem.

Essas ferramentas são bastante básicas, mas são adequadas para muitos usos. Obviamente, a biblioteca é completamente de código aberto, portanto, fique à vontade para modificá-las, se desejar. O único elemento da interface do usuário que eu não adicionei (ainda) foi um widget de entrada de texto. Isso porque o modelo de evento é muito mais complexo para isso do que os outros modelos, e eu estava cumprindo um prazo.

Sinta-se à vontade para brincar com isso (se você usa o livro ou não) e me avise se tiver algum problema. Vou tentar ajudar.

Tenho vídeos do meu curso disponíveis em http://synapse.cs.iupui.edu/Mediasite/Catalog/

Veja o curso N451. Esse é o desenvolvimento de jogos.

Dois pi
fonte
Mesmo? "O único elemento da interface do usuário"? E as árvores, listas, barras de menus, controles deslizantes, barras de progresso, giradores, caixas de combinação, janelas redimensionáveis, painéis redimensionáveis, widgets de rich text e guias, apenas para citar alguns? Sua biblioteca não é diferente da meia dúzia de outras que nunca terminaram no pygame.org.
Uau. Isso foi um toque de raiva, hein? Esse é o único elemento de usuário que eu quero que não adicionei. Eu posso construir o que eu quiser. Não construí as outras coisas porque não preciso delas. Você pode adicionar suas próprias ferramentas à minha estrutura (projetada para ser expansível) ou criar seu próprio kit de ferramentas. Se você quer me apoiar para terminar este projeto, estou disposto a falar sobre isso. No entanto, como a maioria dos desenvolvedores, tenho que pagar as contas, para que os projetos em que eu possa ganhar a vida tenham a maior prioridade.
Dois pi
Não está bravo. Estou apenas apontando que seu projeto não é diferente de PyUI ou PGU. É uma API não mantida para criar botões simples. Não é um "kit de ferramentas bom e moderno para widgets".
Estou de acordo com você de que a biblioteca completa não existe (e achei que as outras eram muito complexas). Acho que a resposta é você construir a biblioteca que deseja, em vez de dispensar os esforços daqueles que deram livremente suas trabalhar para a comunidade. Minha biblioteca é reconhecidamente pequena, porque eu não precisava de mais nada. Eu adoraria se você quisesse adicionar os recursos que deseja a esta ou qualquer outra biblioteca, porque concordo que uma biblioteca GUI 'completa' possa ser útil. No entanto, os jogos geralmente não têm as mesmas necessidades que outros aplicativos de GUI.
2 pi