ventanas ventana una tamaƱo emergente ejemplos crear con como cerrar abrir python pygame pgu

python - una - Hacer ventanas emergentes en pygame con pgu



ventana de pygame (1)

En caso de que alguien más quiera hacer esto, he encontrado algo que funciona: app.init() un contenedor vacío y llama a app.init() sobre él.

empty = gui.Container(width=WIDTH, height=HEIGHT) gui.init(empty)

Estoy intentando agregar algunos elementos de la interfaz gráfica de usuario (cuadros de diálogo con botones) a un juego que estoy escribiendo con pygame. Busqué un juego de herramientas GUI decente y terminé con pgu . De todos modos, estoy tratando de que aparezca un cuadro de diálogo, que lo hace (más o menos), pero no se está cerrando.

Aquí hay una versión simplificada de mi código que solo muestra el comportamiento que me importa:

import pygame, sys from pgu import gui screen = None WIDTH = 640 HEIGHT = 480 def init_pygame(): global screen pygame.display.init() screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.DOUBLEBUF) pygame.display.set_caption(''Testing PGU'') class SimpleDialog(gui.Dialog): def __init__(self): title = gui.Label("Spam") main = gui.Container(width=20, height=20) # I patched PGU to use new style classes. super(SimpleDialog, self).__init__(title, main, width=40, height=40) def close(self, *args, **kwargs): print "closing" return super(SimpleDialog, self).close(*args, **kwargs) def run(): init_pygame() app = gui.App() dialog = SimpleDialog() app.init(dialog) app.paint(screen) pygame.display.flip() while True: app.paint(screen) pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 3: # right mouse button print "opening" dialog.open() else: app.event(event) elif event.type == pygame.QUIT: sys.exit() else: app.event(event) if __name__==''__main__'': run()

El comportamiento que estoy viendo: se abre una ventana con una versión de pantalla completa del cuadro de diálogo. Nada de lo que haga lo cerrará, aunque al hacer clic con el botón derecho se imprimirá "abrir" en mi consola y al hacer clic con el botón izquierdo en el pequeño círculo rojo aparecerá "cerrando". Parece que el cuadro de diálogo utiliza toda la superficie de fondo en lugar de una más pequeña solo para sí mismo.

El comportamiento que me gustaría ver: aparece una gran pantalla negra (la usaré más adelante) y cuando hago clic derecho sobre ella, se abre una pequeña ventana. Cuando salí, haga clic en el botón de cerrar, la ventana desaparecerá.

Sospecho que tiene algo que ver con el hecho de que no estoy usando una computadora de escritorio, pero no quiero que todo el juego viva dentro de una GUI.

Ahora, solo para ser explícito, la pregunta: ¿Cómo modifico mi código para pasar del comportamiento que estoy viendo al comportamiento que me gustaría ver? Estoy abierto a usar una biblioteca de GUI diferente si alguien sabe de algo más reciente que pgu.