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.