onLoad y GTK
Arnau Sanchez
arnau en ehas.org
Jue Jul 20 13:51:49 CEST 2006
la única forma de hacer eso, que yo sepa, es usando threads. Iba a hacerte un
programa de ejemplo, pero he encontrado esta entrada, lo que me ahorra mucho
trabajo :-)
http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq20.006.htp
verás que usa el módulo threading (en vez de thread), con lo que el código
resultante es bastante sencillo.
aprovecho el correo para recomendar este FAQ de PyGTK [1], aunque seguramente ya
habrá salido antes en la lista. Como cualquiera pueda editarlo -siempre que
estés registrado-, el FAQ está siempre vivo, actualizado y creciendo con nuevas
entradas.
arnau
[1] http://www.async.com.br/faq/pygtk/index.py?req=index
camontuyu escribió:
> OK,
>
> esa es la forma de crear un dialogo, pero yo quiero que se muestre
> cuando se halla mostrado la ventana principal y mientras está este
> dialogo realizar una serie de operaciones. El código que tengo sería
> así.
>
> def main(self):
> """ Ejectua la aplicación """
> # creamos el dialogo de cargar
> d = DialogoConectar()
> d.show()
>
> [Operaciones costosas]
>
> d.hide()
>
> gtk.main()
>
> con lo que no muestra nada hasta que no terminan las operaciones.
>
> Creando este código me ha surgido otra cuestión, ¿como puedo heredar de
> un widget creando con el glade?
>
> class DialogoConectar(gtk.Dialog):
> def __init__(self):
> gtk.Widget.__init__(self)
>
> interfaz = gtk.glade.XML(defines.BASE_INTERFAZ, 'dialogConectar')
> interfaz.signal_autoconnect(self)
>
> self = interfaz.get_widget('dialogConectar')
>
> def on_windowMain_destroy(self, ventana):
> print "saliendo del dialogo!"
>
>
> Supongo que lo que he puesto es una burrada, pero puede ser orientativo
> para ver si van por ahy los tiros.
>
> Que me aconsejais?
>
>
> El mié, 19-07-2006 a las 13:02 +0200, Arnau Sanchez escribió:
>> 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
>> _______________________________________________
>> Python-es mailing list
>> Python-es en aditel.org
>> http://listas.aditel.org/listinfo/python-es
>
>
>
> ______________________________________________
> LLama Gratis a cualquier PC del Mundo.
> Llamadas a fijos y m�viles desde 1 c�ntimo por minuto.
> http://es.voice.yahoo.com
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
------------ 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