[Python-es] [PyGtk] Splash para aplicación
Ángel Guzmán Maeso
shakaran en gmail.com
Lun Mayo 19 10:03:35 CEST 2008
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
Más información sobre la lista de distribución Python-es