Existe-t-il de bonnes boîtes à outils de widgets modernes pour Pygame? J'ai regardé le PGU , mais il n'est apparemment pas entretenu.
la source
Existe-t-il de bonnes boîtes à outils de widgets modernes pour Pygame? J'ai regardé le PGU , mais il n'est apparemment pas entretenu.
Non. Chaque année, quelqu'un crée une nouvelle bibliothèque d'interface utilisateur Pygame, puis l'abandonne après quelques versions, probablement une fois qu'il se rend compte que l'écriture des dispositions de boutons est facile, mais écrire une bibliothèque d'interface utilisateur complète est un vrai travail. L' gui
étiquette sur le site Pygame en relate certains.
En janvier 2011, j'ai examiné cinq boîtes à outils GUI pour pygame et j'ai essayé de les faire fonctionner avec Python 3. Les cinq étaient: Albow, GooeyPy, PGU, pqGUI et sgc.
Je n'ai pas réussi avec GooeyPy , mais j'ai réussi à faire travailler les quatre autres avec Python 3. (Je voulais aussi essayer la poutine, de Shandy Brown, mais je ne l'ai pas trouvée, et j'ai complètement ignoré Ocemp.)
Malheureusement, Albow et Ocemp semblent à peu près morts. Albow a été mis à jour pour la dernière fois en 2009 et Ocemp a été mis à jour pour la dernière fois en 2008. (Notez que la version d'Albow sur pygame.org n'est pas la dernière.)
PGU (Phil's Pygame Utilities) a été repris et maintenu par Peter Rogers, et Victor Kam en a converti la majeure partie en Python 3. Il a été mis à jour pour la dernière fois en janvier 2012 et est probablement amélioré depuis que je l'ai examiné. (Notez que la version de PGU sur pygame.org n'est pas la dernière.)
sgc était nouveau et encore très incomplet quand je l'ai regardé. Cependant, il est en cours de développement actif et pourrait être considérablement amélioré à l'heure actuelle. (Notez que la version de sgc sur pygame.org n'est pas la dernière.)
J'ai exécuté chacun des cinq à travers un simple compteur de lignes de code pour évaluer leurs tailles:
Ce sont les résultats (en janvier 2011):
Code Albow min = 2810, max = 4551 (max = 162% de min) Albow \ démo min = 453, max = 649 GooeyPy \ gooeypy min = 2034, max = 3941 (max = 194% de min) GooeyPy \ examples min = 178, max = 351 pgu \ pgu min = 2910, max = 7047 (max = 242% de min) incl. pgu \ pgu \ gui min = 1678, max = 4638 (max = 276% de min) pgu \ exemples min = 822, max = 2527 pqGUI.py min = 1586, max = 1834 (max = 116% de min) Exemple.py min = 178, max = 225 sgc (incomplet) min = 889, max = 1243 (max = 140% de min)
Dans chaque cas, le nombre "min" est plus représentatif de la "taille" de la boîte à outils, car il ne compte pas les espaces et les commentaires. Lorsque le nombre "max" est très proche du nombre min, cela signifie qu'il n'y a pas beaucoup d'espaces et pas beaucoup de commentaires dans le code. pqGUI illustre cela, car il n'a presque pas de commentaires du tout (et pas de docstrings non plus), ce qui est dommage, car (IMO) il a fait les éléments GUI les plus beaux.
Avertissement majeur: les docstrings ne sont pas comptés comme des commentaires! Cela rend PGU, sgc & GooeyPy, qui ont des docstrings, plus gros et moins bien documentés qu'ils ne le sont réellement, par rapport à Albow et pqGUI, qui manquent de docstrings.
J'ai aimé pqGUI parce que j'aimais l'apparence des widgets qu'il crée, mais il n'est pas pris en charge et n'est pas documenté, et je n'ai pas pu trouver l'auteur.
Sur les cinq, en janvier 2011, PGU était le leader incontesté. Mais j'étais insatisfait des cinq, alors j'ai écrit le mien. (Remarque: PGU et sgc ont tous deux été mis à jour et probablement améliorés depuis que je les ai consultés.)
Selon l'observation ironique de Joe Wreschnig (ci-dessus), ma boîte à outils GUI est incomplète, comme toutes les autres. Mais il y a quelques choses qui vont pour ça.
Cependant, il manque certains contrôles importants que vous voudrez probablement, comme les boîtes de dialogue d'ouverture de fichier / zone de liste déroulante et les tableaux. Les contrôles qui existent existent bien, mais les fonctionnalités telles que les barres de titre et les barres de défilement sont des nombres fixes de pixels en largeur, plutôt que de largeur réglable. Le code est bien commenté et il existe une application de démonstration avec des exemples d'utilisation, mais il n'y a pas de documentation appropriée sur l'utilisation. De plus, c'est pré-bêta, donc tout est susceptible de changer.
Les résultats du compteur de lignes de code sont les suivants:
DavesGUI (avec code de démonstration) min = 2267, max = 3055 (max = 135% de min) (sans code de démonstration) min = 2018, max = 2644 (max = 131% de min) (avec docstrings commentés) min = 1442, max = 2644 (max = 183% de min)
Si, malgré ces limitations, quelqu'un veut l'essayer, contactez-moi par e-mail. Renseignez-vous sur "DavesGUI." Mon adresse e-mail est ici: http://www.burtonsys.com/email/
J'ai récemment vu pygtk utilisé avec pygame et cela fonctionne très bien. Assurez-vous simplement d'utiliser l'événement expose avec le widget de zone de dessin gtk et de mettre à jour les données de jeu à chaque passage dans la boucle principale de gtk. Si vous voulez qu'une boîte à outils gui complète fonctionne dans pygame, cela n'arrivera pas, mais si vous voulez qu'une boîte à outils gui complète soit utilisée avec pygame, alors vous avez de la chance, pygtk est-ce. Vous pouvez même utiliser gtk en utilisant le langage de programmation C et toujours importer pygame en tant que widget dans la zone de dessin et mettre à jour pygame en python si cela fait flotter votre bateau et que vous souhaitez une vitesse turbocompressée. Pourquoi tout le monde, utilisez simplement google et trouvez la réponse, puis implémentez-le, pas dur et pas biggy. Au fait, pygame est vraiment cool. Ces gars-là y ont mis tellement de travail, et cela fonctionne si efficacement que c'est incroyable.
J'ai ajouté des éléments GUI très basiques à ma bibliothèque GameEngine: http://aharrisbooks.net/pythonGame/ch10/ (inclus dans un livre sur le développement de jeux en Python)
J'ai construit des éléments GUI très simples basés sur le sprite standard: une étiquette, un bouton, une étiquette multi-lignes et une mini-barre de défilement.
Ces outils sont assez basiques, mais ils conviennent à de nombreuses utilisations. Bien sûr, la bibliothèque est entièrement open-source, alors n'hésitez pas à les modifier si vous le souhaitez. Le seul élément d'interface utilisateur que je n'ai pas ajouté (encore) était un widget de saisie de texte. C'est parce que le modèle d'événement est beaucoup plus complexe pour cela que les autres modèles, et je me heurtais à une échéance.
N'hésitez pas à jouer avec (que vous utilisiez le livre ou non) et faites-moi savoir si vous rencontrez des problèmes. Je vais essayer de t'aider.
J'ai des vidéos de mon cours disponibles sur http://synapse.cs.iupui.edu/Mediasite/Catalog/
Regardez le cours N451. C'est celui sur le développement de jeux.
Google Summer of Code a ajouté une nouvelle interface graphique: http://blog.sambull.org/pygame-gui-0-2
la source