Re: [Python-es] Re: Re: [PyGtk] Splash para aplicación
Arnau Sanchez
pyarnau en gmail.com
Mie Mayo 21 20:01:50 CEST 2008
Ángel Guzmán Maeso escribió:
> Me he leído esa FAQ(y toda la lista de FAQ's) y no me ha quedado muy claro,
> ya que en la pagina de Gnome (sobre los generadores)
> viene mucha parte en modo "pseudocódigo" y no lo puedo ver un ejemplo real
> funcionando.
¿Pseudo-código? supongo que quieres decir que es sólo un fragmento,
porque lo que aparece en el pygtk-faq es código real.
> Como soy un principiante, aun no entiendo
> muchos conceptos y tampoco he trabajado nunca con hilos (solo tengo algunas
> pequeñas nociones) y menos aun se como trabajan en Python.
>
"create_app.next" no existe porque "create_app" no es un generador, no
hace yield en ningún momento y es, por tanto, una función común y
corriente. No sirve que luego desde dentro llames a un generador (aunque
hacer de __init__ un generador, uff, duele sólo pensarlo, Python nunca
te dejará hacer eso). Sea como sea, dos (o más) generadores se pueden
enlazar así:
def generador1():
for x in generador2():
yield x
def generador2():
yield 1
yield 2
Pero no es necesario en tu caso, pues podrías organizarlo en un único
generador:
obj = MiClase()
task = obj.initgen() # obj.initgen es un generador que hace el trabajo
duro de inicialización
gobject.idle_add(task.next, ...)
¿Por qué pones esos try/except? el gtk.main_quit ya debería llamarse
automáticamente cuando se produzca una excepción.
> while i<1000000:
> i=i+1
> yield True # #MODIFICADO: Yield, lo traduzco como "producir",
> asi que lo pongo mientras produce el while
> #if i%10000:
> # print i
>
> yield False # Al terminar dejo de producir, pero no se si el metodo
> def "next" deba llamarse
> #en el anterior while
> print "Bucle terminado"
> self.window.show_all() # Muestra la ventana (sin tamaño por
> defecto es 200x200)
>
Todo lo que haya después del "yield False" no se ejecutará nunca, una
vez has devuelto "False" ese generador pasa a mejor vida. Si tienes algo
que ejecutar, hazlo antes.
Si esto no te convence, puedes probarlo con threads; será complicado
pero aprenderás mucho.
arnau
pd: dicho esto, odio con toda mi alma los splash, ¿por qué un programa
se cree tan importante como para inutilizar, aunque sea temporalmente,
el escritorio? :-p
_______________________________________________
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