onLoad y GTK

Arnau Sanchez arnau en ehas.org
Mie Jul 19 13:02:27 CEST 2006


camontuyu escribió:

> Como podría hacer que después de que se cargase el formulario principal,
> este lanzase un dialogo modal para por ejemplo mostrar un progreso?
> (teniendo el formulario principal del fondo) ??

Se puede hacer de dos formas:

1) Creando el widget a mano (un dialog, por ejemplo), y llenándolo con los otros 
widgets que necesites. Ejemplo patatero:

dialog = gtk.Dialog("Dialogo", main_app_window, gtk.DIALOG_MODAL | 	 
gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CLOSE, gtk.RESPONSE_ACCEPT))

# usa mejor una función que lambda, pero lo pongo así para que quede compacto
dialog.connect("response", lambda widget, response: widget.destroy())
vbox = gtk.VBox(False, 5)
label = gtk.Label("Esto aparece encima de la barra de progreso")
progress = gtk.ProgressBar()
#progress.set_text("progreso")
#progress.set_fraction(0.1)
vbox.add(label)
vbox.add(progress)
dialog.vbox.add(vbox)
dialog.show_all()		

(cuando quieras cerrar el dialogo: dialog.destroy())

2) Creando el widget con glade (actívale la opción "modal" a esa ventana) y 
haciéndole un show() cuando quieras que se vea. Parece más fácil, pero esta 
opción también tiene sutilezas, si el usuario cierra la ventana se generará un 
destroy() y no podrá volver a usarse. Para evitarlo, debes capturar la señal 
"delete-event", y allí hacer un hide() del widget y un "return True"; con esto 
último le avisas a gtk que no quieres que destruya el widget, y entonces sí 
podrás volver a abrirlo.

...

Hacer una barra de progreso implica seguramente tener tareas en segundo plano, 
lo que ya te decía que pueder ser complejo si son tus primeros pasos en pygtk, 
pero en fin, suerte.

Si la tarea que se asocia a la barra de progreso tiene algo que ver con la 
lectura de ficheros/sockets, te puede ser útil esto:

file:///usr/share/doc/python-gtk2-doc/html/gobject-functions.html#function-gobject--io-add-watch

arnau
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es