[Olpc-uruguay] Cómo hacer bucles en GTK

Flavio Danesse fdanesse en gmail.com
Lun Abr 15 18:37:00 EDT 2013


claro, las lineas:

    while gtk.events_pending():
        gtk.main_iteration()

hacen que se complete todo lo referente a gtk antes de continuar con tu
bucle, por lo cual puedes cancelarlo cuando quieras, y siempre te va a
actualizar la interfaz en cada pasada del bucle, ya que al cambiar
cualquier cosa en los widgets de tu aplicación, se producen eventos nuevos
en gtk que nunca pasarán desapercibidos gracias a esas dos lineas de codigo.



El 15 de abril de 2013 19:19, amviera en adinet.com.uy
<amviera en adinet.com.uy>escribió:

> Muchas gracias a todos por sus  respuestas. De todos pude sacar alguna
> conclusión, pero dos líneas sugeridas por Flavio fueron fundamentales:
>
>     while gtk.events_pending():
>         gtk.main_iteration()
>
> El problema es que mientras se está en un bucle, tanto while como for, se
> realizan todas las operaciones indicadas allí, menos las correspondientes
> Gtk, por lo que queda el programa como trancado hasta que termine el bucle.
> No funciona ni siquiera un botón CANCELAR o SALIR, ni
> nada.
>
> Ya está solucionado.
>
> Estoy tratando de terminar el programa que considero una buena herramienta
> para el manejo de datos personales, informes, evaluaciones y demás, de los
> alumnos. La idea es que pueda ser configurado por el usuario según las
> necesidades de cada caso particular, ya que no en todos los cargos docentes
> manejamos los mismos datos.
>
> Cuando lo tenga pronto lo subiré y me dirán qué les parece.
>
> Saludos, Mauricio.
>
>
>
>
>  ----Original Message----
> De: fdanesse en gmail.com
> Fecha: 10/04/2013 16:03
> Para: "Comunidad ceibalJAM"<olpc-uruguay en lists.laptop.org>
> Asunto: Re: [Olpc-uruguay] Cómo hacer bucles en GTK
>
> import gtk
>
> w=gtk.Window()
>
> label = gtk.Label('Hola')
> w.add(label)
> w.set_size_request(300,300)
>
> w.show_all()
>
> x = 0
> while x < 10000:
>     x += 1
>     label.set_text(str(x))
>
>     while gtk.events_pending():
>         gtk.main_iteration()
>
> gtk.main()
>
>
>
>
> El 10 de abril de 2013 15:09, Pablo Moleri <pmoleri en gmail.com> escribió:
>
>> Mauricio, se me escapó el mail anterior.
>>
>> 2013/4/10 amviera en adinet.com.uy <amviera en adinet.com.uy>
>>
>> El problema no es de tiempo, de hecho hay una línea time.sleep(1) que
>>> permite hacer la pausa. También había probado con timeout_add y no funcionó.
>>>
>>
>> El time.sleep(1) seguramente no te funciona porque el programa se queda
>> trancado ahí en vez de actualizar la pantalla, por eso no vez los cambios
>> reflejados.
>> En la programación en cualquier entorno gráfico es importante no dejar
>> trancada la ejecución del programa, por eso es mejor recurrir a los timers.
>>
>>
>>> Lo que tu me sugerís da el siguiente error que no sé cómo solucionarlo:
>>>
>>> unbound method tiempo() must be called with MiClase instance as first
>>> argument (got nothing instead)
>>
>>
>> Esto seguramente te da porque tenés la función tiempo declarada dentro de
>> una clase, ej:
>>
>> class MiClase:
>>     ...
>>     def tiempo(self, *args):
>>         ...
>>
>> y vos la estás llamando sin la clase. Tendrías que usar self.tiempo  o
>> miclase.tiempo,  depende si estás adentro o afuera de la clase.
>>
>> Si querés mandame la clase entera, así veo bien como está programado.
>>
>> Saludos,
>> Pablo
>>
>>
>> _______________________________________________
>> Olpc-uruguay mailing list
>> Olpc-uruguay en lists.laptop.org
>> http://lists.laptop.org/listinfo/olpc-uruguay
>>
>>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20130415/ccde1219/attachment.html>


More information about the Olpc-uruguay mailing list