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