Re: [PyGtk] Splash para aplicación
Miguel Beltran R.
yourpadre en gmail.com
Lun Mayo 19 17:04:42 CEST 2008
no estoy seguro, pero me imagino que lo que necesitas es meter el
spash en un Thread
El día 19 de mayo de 2008 3:03, Ángel Guzmán Maeso
<shakaran en gmail.com> escribió:
> Hola, estoy empezando con python y estoy asombrado con su potencial.
>
> Estoy tratando de hacer una aplicación ayudándome de PyGtk y necesito que
> tenga un splash. Googleando he encontrado muy poca información al respecto,
> solo un par de blogs que explicaban muy por encima con wxwidget y con Gtk
> puro.
>
> Con las lineas de Gtk me he peleado y he conseguido hacer algo como lo
> siguiente:
>
> ---
>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
>
> import pygtk
> pygtk.require('2.0')
> import gtk
> import gobject
>
> class Splash:
> def start(self):
> print "Creando SPLASH..."
> self.v=gtk.Window(gtk.WINDOW_TOPLEVEL)
> self.v.set_position(gtk.WIN_POS_CENTER)
> self.v.set_modal(True)
> self.v.set_size_request(150,100)
> self.v.set_title('MiAplicación')
> self.v.AppPaintable=True
>
> image = gtk.Image()
> image.set_from_file("logo.gif")
>
> box=gtk.VBox()
> box.pack_start(image,False,False, 0)
> self.v.add(box)
> image.show()
> box.show()
>
> label = gtk.Label("MiAplicación 0.0.0.1")
> box.pack_start(label,True,False, 0)
> label.show()
>
> self.v.show()
> self.timeout=gobject.timeout_add(5000, self.AutoClose)
>
> #MiAplicacion()
> #self.AutoClose()
>
> def AutoClose(self):
> self.v.destroy()
> return False
>
> class MiAplicacion:
>
> def __init__(self):
> window = gtk.Window(gtk.WINDOW_TOPLEVEL)
>
> # Muchas operaciones
> # Carga de BD
> # Carga de interfaces
> # etc
> # Para simularlo, nada como un gran bucle de 10 millones
> print "Empezando bucle"
> i=1
> while i<10000000:
> i=i+1
>
> print "Bucle terminado"
> window.show()
>
>
>
> def main():
> gtk.main()
>
>
> if __name__ == "__main__":
> print "Cargando GUI ..."
> s=Splash().start()
> print "Cargando aplicación"
> Miaplicacion()
> main()
>
> ---
>
> El problema es que el splash se lanza, pero solo cuando se ha cargado todo
> el proceso de la aplicación, por lo tanto, no
> hace su principal objetivo, que es permanecer hasta que la aplicación se
> cargue.
> En el código he probado a lanzar la clase de la aplicación desde dentro del
> splash y que se cerrara con un timeout o
> cuando la clase de la aplicación se terminara de cargar.
>
> Debe estar fallando algo muy simple pero no lo veo. Tampoco tengo
> referencias de ninguna aplicación de código libre
> que este programada con PyGtk y use un Splash, por lo que no he podido mirar
> nada y aprender de ella.
>
> Otro problema que tengo, es que no se como quitar las demás partes de la
> ventana (titulo, y botones de maximizar, minimizar y cerrar) de
> la ventana del splash.
>
> Cualquier comentario es bienvenido.
>
> Saludos.
>
>
> --
> Shakaran
> Mi juego de rol online: www.apogeus.es
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>
--
________________________________________
Lo bueno de vivir un dia mas
es saber que nos queda un dia menos de vida
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es