Existe-t-il de bonnes boîtes à outils de widget d'interface utilisateur pour Pygame? [fermé]

8

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.

Nathon
la source

Réponses:

11

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.


la source
8

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.

  • Il fonctionne avec Python 2.6, 2.7, 3.1, 3.2 et probablement 3.3.
  • Il est basé sur un sprite et utilise des événements pygame pour la communication, de sorte qu'il peut facilement être déposé dans un programme pygame existant, sans reprendre la boucle d'événements. Les widgets sont sous-classés à partir de pygame.sprite.Sprite.
  • Il prend en charge les formulaires, boutons, cases à cocher, boîtes de dialogue et boîtes de dialogue modales et non modales, menus verticaux, boîtes de saisie de texte et curseurs (barres de défilement).
  • Il gère en douceur les contrôles / widgets qui se chevauchent, le déplacement et le redimensionnement des widgets et des formulaires dans les formulaires.

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/

Dave Burton
la source
1

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.

kong
la source
0

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.

Deux pi
la source
Vraiment? « L' un élément d'interface utilisateur »? Qu'en est-il des arbres, des listes, des barres de menus, des curseurs, des barres de progression, des flèches, des zones de liste déroulante, des fenêtres redimensionnables, des volets redimensionnables, des widgets de texte enrichi et des onglets, pour n'en nommer que quelques-uns? Votre bibliothèque n'est pas différente de la demi-douzaine d'autres aussi encore jamais finies sur pygame.org.
Sensationnel. C'était un peu en colère, hein? C'est le seul élément utilisateur que je veux que je n'ai pas ajouté. Je peux construire tout ce que je veux. Je n'ai pas construit les autres choses parce que je n'en ai pas besoin. Vous êtes libre d'ajouter vos propres outils à mon framework (qui est conçu pour être extensible), ou de créer votre propre boîte à outils. Si vous voulez m'aider à terminer ce projet, je suis prêt à en parler. Cependant, comme la plupart des développeurs, je dois payer les factures, donc les projets sur lesquels je peux gagner ma vie sont prioritaires.
Deux pi
Ce n'est pas en colère. Je souligne simplement que votre projet n'est pas différent de PyUI ou PGU. C'est une API non maintenue pour disposer de boutons simples. Ce n'est pas une "bonne boîte à outils de widgets modernes".
Je suis d'accord avec vous que la bibliothèque complète n'existe pas (et je pensais que les autres étaient trop complexes) Je pense que la réponse est pour vous de construire la bibliothèque que vous voulez plutôt que de rejeter les efforts de ceux qui ont librement donné leur travailler à la communauté. Ma bibliothèque est certes minuscule, car je n'avais besoin de rien d'autre. Je serais ravi si vous vouliez ajouter les fonctionnalités que vous souhaitez à cette bibliothèque ou à toute autre bibliothèque, car je suis d'accord qu'une bibliothèque GUI `` à part entière '' pourrait être utile. Cependant, les jeux n'ont généralement pas les mêmes besoins que les autres applications GUI.
Two pi