¿Qué gui toolkit debo usar con Pygame?

Estoy creando un juego que necesita poder desplegar elementos gui dentro de una superficie de pygame. Esta pregunta no es lo que quiero porque wxPython gira alrededor de la superficie SDL, no dentro de ella. Hasta ahora solo he visto ocemp , pgu y GooeyPy en este espacio problemático.

  • Ocemp es enorme y crufty buscando. Menciona Python 2.3 y el archivo más nuevo que encontré en una búsqueda rápida del repository de cvs tenía 2 años.
  • No pude hacer que GooeyPy funcionara (aunque no me esforcé mucho; eggs y Debian no son amigos) y v0.2 se actualizó por última vez en febrero de 2009.
  • He estado trabajando con pgu, pero parece que no se ha mantenido (la última actualización 11/2009 y el mantenedor original lo abandonó) y está empezando a mostrar su edad. Utiliza clases de estilo antiguo y lanza excepciones de cadena.

Así que mi pregunta para usted, SO, es esta: ¿Qué kit de herramientas de GUI debo usar para hacer que los botones que se pueden hacer clic se abran en sus aplicaciones de pygame? ¿Hay alguna en desarrollo activo?

Edición, septiembre 2011

Parece que PGU todavía se mantiene. Las últimas confirmaciones son de hace 4 días.

No estoy al tanto de ningún gui de pygame, pero no debería ser terriblemente difícil rodar el tuyo (y, ojalá, ¡quizás sea de código abierto!)

Si solo está haciendo unos pocos botones simples, podría usar GIMP o Photoshop o alguna otra cosa para hacer dos (o tres) imágenes: un botón de desplazamiento hacia arriba, hacia abajo y posible, luego escribiría su propio bucle / controlador de eventos que hacer algo como esto:

  1. Obtener la posición del ratón
  2. ¿Está el mouse sobre alguno de los botones (y no se presiona ningún botón)?
  3. Mostrar imagen de desplazamiento
  4. ¿Está el mouse sobre un botón y se presiona un botón del mouse?
  5. Evento de fuego asociado con ese botón
  6. Ver 1

Eso es un poco simplificado, pero al menos debería darle un punto de partida (si nadie más tiene bibliotecas GUI de pygame)

A pesar de ser viejo, no es necesario que tengas una biblioteca de gui, solo usas sprites. Para las tags tomarías un sprite y le darías la fuente para renderizar y tal. Para los botones, hereda la etiqueta y agrega un estado activo para detectar cambios y hacer que ocurra algo más. Y una rueda de desplazamiento funciona igual que un botón y solo cambia una etiqueta o algo más.

A partir de la wiki de python http://wiki.python.org/moin/PythonGameLibraries

Vea también las respuestas a: ¿Cuál es la mejor manera de agregar una GUI a una aplicación de Pygame?

En particular, si alguien desea usar DavesGUI, mi kit de herramientas GUI pre-beta para PyGame, envíeme un correo electrónico. Hay un enlace a mi dirección de correo electrónico al final de mi respuesta, allí .

Creé una función que puedes usar dentro de pygame sin importar bibliotecas adicionales.

def gui(x1, y1, x2, y2, button): mouseX, mouseY = pygame.mouse.get_pos() if mouseX >= x1 and mouseX <= x2 and mouseY >= y1 and mouseY <= y2: if button: return True else: return False else: return False 

Llama a la función así (estoy usando un menú como ejemplo).

 topCornerX = #X coordinate of top right corner topCornerY = #Y coordinate of top right corner bottomCornerX = #X coordinate of bottom left corner bottomCornerY = #Y coordinate of bottom left corner while menu: for event in pygame.event.get(): mouseLeft, mouseMiddle, mouseRight = pygame.mouse.get_pressed() if gui(topCornerX, topCornerY, bottomCornerX, bottomCornerY, '''mouseLeft, mouseMiddle, or mouseRight''') menu = False 

Entonces continuarías con tu salida.

Esto funciona tomando las coordenadas de un rectángulo y comparando la posición de su mouse con el interior del rectángulo y es verdadero si hacen clic en el botón correcto y están dentro del rectángulo. Espero que esto ayude.

Estoy de acuerdo con milleja46 en no usar una interfaz gráfica de usuario para algunas cosas,

Encontré 2 sencillos progtwigs de menú emergente aquí:

menú sofisticado: http://code.google.com/p/simple-pygame-menu/

ventana emergente simple: ¿Cómo especificar qué sucede realmente cuando se hace clic en Sí / No con ctypes MessageBoxW?