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.
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:
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?