2011-09-27 12 views
5

¿Hay alguna manera de decirle a gtk que llame automáticamente al gtk.main_quit() cuando se cierra/destruye la última ventana abierta de la aplicación?Cómo cerrar una aplicación pygtk después de cerrar la última ventana/destruirla

Si no hay una función directa que ofrezca esta funcionalidad, podría pensar en lo siguiente: En el método de destrucción de la ventana: obtenga una lista de ventanas abiertas en el proceso, si está vacía. ¿Hay alguna manera de obtener una lista así?

La solución obvia sería mantener un seguimiento manual de todas las ventanas abiertas, pero me gustaría evitar esto si es posible.

+1

¿Ha intentado con la vista [Referencia de PyGTK (window-get-toplevels)] (http: // library .gnome.org/devel/pygtk/stable/class-gdkwindow.html # function-gdk - window-get-toplevels) – spicavigo

Respuesta

7

destruir la señal de la ventana principal debe estar conectado a main_quit GTK:

window.connect("destroy", gtk.main_quit) 
+1

Creo que OP significa una situación en la que hay múltiples ventanas principales. Piense en un editor de palabras que abre una nueva ventana para cada documento activo. – patrys

+0

Si este es el caso, uno solo puede contar las ventanas abiertas, agregar una a una variable global cuando se crea y restar una cuando se destruye debería ser suficiente, no es necesario mantener la lista. – Louis

+1

También puede usar GtkAppliction si su aplicación se ajusta a la lógica. Eso será mejor y GtkApplication manejará esa lógica para ti. – erick2red

2

Utilice el método gtk.main_level() para obtener el nivel de anidamiento actual del bucle principal. El nivel de anidamiento se incrementa al llamar a la función gtk.main() y se reduce llamando a la función gtk.main_quit()

Cuestiones relacionadas