[pyGTK] avance en un progressbar
Arnau Sanchez
pyarnau en gmail.com
Lun Oct 27 18:10:10 CET 2008
Milton Galo Patricio Inostroza Aguilera escribió:
> correr mi tarea y aquí nace la primera pregunta...he leído de la
> documentación que gobject.idle_add sirve para ejecutar tareas cuando
> el main de gtk no tiene nada más que hacer ¿eso no lo resta prioridad
> a mi tarea?¿sólo basta con cambiar las prioridades que señalan en la
> documentación?.
Existen dos prioridades predefinidas para usarse con gobject.idle_all:
gobject.PRIORITY_DEFAULT_IDLE y gobject.PRIORITY_HIGH_IDLE (son valores
numéricos, así que -aunque poco recomendable- puedes poner valores intermedios
si quieres). En el 99% de los casos será suficiente usar la que viene por
defecto; establecer un nivel alto significa que tu tarea pasa por delante de las
propias del GUI (repintado, cambio de tamaño, etc), y eso suele ser innecesario
(y gráficamente desagradable para el usuario).
El GUI (normalmente) tarda muy poco en hacer sus propias tareas, así que no va a
ralentizar las tuyas, aunque éstas tengan menor prioridad. Las prioridades
suelen ser más útiles cuando has lanzado varias tareas propias y quieres
establecer a cuál dedicar más recursos.
> Tuve que agregar un time.sleep(0.05) para que la barra no avanzara
> de forma tan rápida y claro de forma antinatural para el usuario...Acá
> viene mi segunda pregunta..¿No existe otra forma de que la barra
> avance de forma más suave?...ya que si se fijan por hacer algo
> "cosmetico" estoy retardando la ejecución de la tarea que
> verdaderamente importa...o será como no estoy haciendo nada de
> computo, luego cuando agregue funcionalidades mayores avanzará más
> lento?...
Siempre puedes llamar a pulse() cada N iteraciones.
arnau
--
Web freelance: http://tokland.freehostia.de
------------ próxima parte ------------
_______________________________________________
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