¿Hay algún buen kit de herramientas de widgets de interfaz de usuario para Pygame? [cerrado]

8

¿Hay algún buen y moderno kit de herramientas de widgets para Pygame? He visto PGU , pero aparentemente no se mantiene.

Nathon
fuente

Respuestas:

11

No. Cada año, alguien crea una nueva biblioteca de interfaz de usuario de Pygame y luego la abandona después de algunas versiones, probablemente una vez que se dan cuenta de que escribir diseños de botones es fácil, pero escribir una biblioteca de interfaz de usuario completa es un trabajo real. La guietiqueta en el sitio de Pygame narra algunos de estos.


fuente
8

En enero de 2011, miré cinco kits de herramientas GUI para pygame e intenté que todos funcionaran con Python 3. Los cinco fueron: Albow, GooeyPy, PGU, pqGUI y sgc.

No tuve éxito con GooeyPy , pero conseguí que los otros cuatro trabajaran con Python 3. (También quería probar poutine, de Shandy Brown, pero no pude encontrarlo, y pasé por alto a Ocemp).

Desafortunadamente, Albow y Ocemp parecen bastante muertos. Albow se actualizó por última vez en 2009, y Ocemp se actualizó por última vez en 2008. (Tenga en cuenta que la versión de Albow en pygame.org no es la última).

PGUPeter Rogers se hizo cargo de la (Phil's Pygame Utilities) y Victor Kam convirtió la mayor parte en Python 3. Se actualizó por última vez en enero de 2012, y presumiblemente se ha mejorado desde que la examiné. (Tenga en cuenta que la versión de PGU en pygame.org no es la última).

sgc era nuevo y todavía muy incompleto cuando lo miré. Sin embargo, se está desarrollando activamente y podría mejorarse mucho en este momento. (Tenga en cuenta que la versión de sgc en pygame.org no es la última).

Corrí cada uno de los cinco un simple contador de líneas de código para medir sus tamaños:

Estos fueron los resultados (en enero de 2011):

    Código de arco mínimo = 2810, máximo = 4551 (máximo = 162% de mínimo)
    Albow \ demo min = 453, max = 649

    GooeyPy \ gooeypy min = 2034, max = 3941 (max = 194% de min)
    GooeyPy \ ejemplos 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 \ ejemplos min = 822, max = 2527

    pqGUI.py min = 1586, max = 1834 (max = 116% de min)
    Ejemplo.py min = 178, max = 225

    sgc (incompleto) min = 889, max = 1243 (max = 140% de min)

En cada caso, el número "min" es más representativo del "tamaño" del kit de herramientas, ya que no cuenta espacios en blanco y comentarios. Cuando el número "máximo" está muy cerca del número mínimo, significa que no hay mucho espacio en blanco y no hay muchos comentarios en el código. pqGUI ejemplifica eso, porque casi no tiene comentarios (y tampoco tiene cadenas de documentos), lo cual es una lástima, porque (IMO) hizo los elementos GUI más bonitos.

Advertencia importante: ¡las cadenas de documentos no se cuentan como comentarios! Eso hace que PGU, sgc y GooeyPy, que tienen cadenas de documentos, se vean más gordas y menos documentadas de lo que realmente son, en comparación con Albow y pqGUI, que carecen de cadenas de documentos.

Me gustó pqGUI porque me gustó el aspecto de los widgets que hace, pero no está soportado ni documentado, y no pude encontrar al autor.

De los cinco, a partir de enero de 2011, PGU era el líder claro. Pero no estaba satisfecho con los cinco, así que escribí el mío. (Nota: PGU y sgc se han actualizado y presumiblemente mejorado, desde que los miré).

Según la observación irónica de Joe Wreschnig (arriba), mi kit de herramientas GUI está incompleto, como todos los demás. Pero tiene algunas cosas a su favor.

  • Funciona con Python 2.6, 2.7, 3.1, 3.2 y presumiblemente 3.3.
  • Está basado en sprites y utiliza eventos de pygame para la comunicación, de modo que se puede colocar fácilmente en un programa de pygame existente, sin tomar el control del evento. Los widgets se subclasifican de pygame.sprite.Sprite.
  • Admite formularios, botones, casillas de verificación, cuadros de mensaje y cuadros de diálogo modales y no modales, menús verticales, cuadros de entrada de texto y controles deslizantes (barras de desplazamiento).
  • Maneja suavemente controles / widgets superpuestos, widgets de movimiento y cambio de tamaño, y formularios dentro de formularios.

Sin embargo, carece de algunos controles importantes que probablemente desee, como los cuadros de diálogo de abrir archivo / cuadro combinado y las tablas. Los controles que existen se ven bien, pero características como barras de título y barras de desplazamiento son números fijos de píxeles de ancho, en lugar de ancho ajustable. El código está bien comentado y hay una aplicación de demostración con ejemplos de uso, pero no hay documentación adecuada sobre cómo usarla. Además, es pre-beta, por lo que todo está sujeto a cambios.

Los resultados del contador de línea de código son:

    DavesGUI (con código de demostración) min = 2267, max = 3055 (max = 135% de min)
     (sin código de demostración) min = 2018, max = 2644 (max = 131% de min)
     (con cadenas de documentos comentadas) min = 1442, max = 2644 (max = 183% de min)

Si, a pesar de esas limitaciones, alguien quiere probarlo, contácteme por correo electrónico. Pregunte sobre "DavesGUI". Mi dirección de correo electrónico está aquí: http://www.burtonsys.com/email/

Dave Burton
fuente
1

Recientemente he visto pygtk usado con pygame y funciona muy bien. Solo asegúrese de usar el evento de exposición con el widget de área de dibujo gtk y actualice los datos de pygame en cada pasada a través del bucle principal de gtk. Si desea que un kit de herramientas de GUI completo funcione dentro de Pygame, esto no sucederá, pero si desea un kit de herramientas de GUI completo para usar con Pygame, entonces tiene suerte, Pygtk es. Incluso puede usar gtk usando el lenguaje de programación C e importar pygame como un widget en el área de dibujo y actualizar pygame en python si eso flota su bote y desea velocidad turboalimentada. Por qué tanto alboroto, solo usa google y encuentra la respuesta y luego impleméntalo, no es difícil y no es exagerado. Por cierto, pygame es realmente genial. Esos tipos han puesto tanto trabajo en ello, y funciona tan eficientemente que es increíble.

kong
fuente
0

He agregado elementos GUI muy básicos a mi biblioteca GameEngine: http://aharrisbooks.net/pythonGame/ch10/ (Incluido en un libro sobre desarrollo de juegos en Python)

Construí elementos GUI muy simples basados ​​en el sprite estándar: una etiqueta, un botón, una etiqueta multilínea y una mini barra de desplazamiento.

Estas herramientas son bastante básicas, pero son adecuadas para muchos usos. Por supuesto, la biblioteca es completamente de código abierto, así que siéntase libre de modificarlos si lo desea. El elemento de la interfaz de usuario que no agregué (todavía) fue un widget de entrada de texto. Esto se debe a que el modelo de eventos es mucho más complejo para esto que los otros modelos, y estaba llegando a una fecha límite.

Siéntase libre de jugar con eso (ya sea que use el libro o no) y avíseme si tiene algún problema. Trataré de ayudar.

Tengo videos de mi curso disponibles en http://synapse.cs.iupui.edu/Mediasite/Catalog/

Mira el curso N451. Ese es el del desarrollo del juego.

Dos pi
fuente
De Verdad? ¿"El único elemento de la interfaz de usuario"? ¿Qué pasa con los árboles, las listas, las barras de menú, los controles deslizantes, las barras de progreso, los controles giratorios, los cuadros combinados, las ventanas redimensionables, los paneles redimensionables, los widgets de texto enriquecido y las pestañas, solo por nombrar algunos? Su biblioteca no es diferente a la media docena de otras que nunca terminaron en pygame.org.
Guau. Eso fue un toque de enojo, ¿eh? Ese es el elemento de usuario que quiero que no agregué. Puedo construir lo que quiera. No he construido las otras cosas porque no las necesito. Puede agregar sus propias herramientas a mi marco (que está diseñado para ser expandible) o crear su propio conjunto de herramientas. Si quieres apoyarme para terminar este proyecto, estoy dispuesto a hablar sobre ello. Sin embargo, como la mayoría de los desarrolladores, tengo que pagar las facturas, por lo que los proyectos en los que puedo ganarme la vida tienen la máxima prioridad.
Dos pi el
No esta enojado. Solo estoy señalando que su proyecto no es diferente a PyUI o PGU. Es una API sin mantenimiento para diseñar botones simples. No es un "buen y moderno kit de herramientas de widgets".
Estoy de acuerdo con usted en que la biblioteca completa no existe (y pensé que las otras eran demasiado complejas). Creo que la respuesta es que usted construya la biblioteca que desea en lugar de descartar los esfuerzos de aquellos que han dado libremente trabajar para la comunidad Mi biblioteca es ciertamente pequeña, porque no necesitaba nada más. Me encantaría si quisieras agregar las funciones que deseas a esta o cualquier otra biblioteca, porque estoy de acuerdo en que una biblioteca GUI 'completa' podría ser útil. Sin embargo, los juegos generalmente no tienen las mismas necesidades que otras aplicaciones GUI.
Dos pi