[pyar] chat en sockets y gtk

Dario Coria dservero en gmail.com
Lun Mar 24 18:53:43 ART 2014


Resuelto.
Perdón por el retraso en la respuesta (fin de semana largo).

Ok, al final el problema era algo similar a lo que se sufre cuando se hace
alguna operación pesada que afecte la interfaz. Con la diferencia de no
estar tocando la interfaz (aquellos que han tenido el problema espero que
entiendan).

En resumen:
(espero no estar tirando fruta xD)
Como dijo Pedro la gui bloqueaba el daemon (por mas que estuviera en un
thread y no afectara la interfaz).
La razón "teórica" no la termino de entender pero la resolución es la misma
que para los problemas de freeze.
Idle_add resuelve el problema por completo.

Gracias gente.



El 22 de marzo de 2014, 10:33, Pedro Jose Pezzarini
<jose2190 en gmail.com>escribió:

> @DarioCoria, te comprendo totalmente. Trabajo como desarrollador y a veces
> es más rapido sacar algo con tecnología ya conocida, que nueva por conocer.
> Y tampoco dan los tiempos para aprender algo sobre la marcha....
>
> Si es tu caso, podés utilizar glade+gtk y hacer una gui rápida con glade2
> ... (ahora esta glade3 para gkt3) y utilizar GObject y sacar los procesos a
> un thread separado.
>
> El problema de tu freeze, es que el "while 1" que tenés corriendo, toma
> control de la gui y se te congela todo.... a mi me pasó lo mismo cuando
> hice un desarrollo con GStreamer.
>
> Esta es una buena referencia, para trabajar threads con GTK:
> http://unpythonic.blogspot.com.ar/2007/08/using-threads-in-pygtk.html
>
>
> El 22 de marzo de 2014, 10:20, Dario Coria <dservero en gmail.com> escribió:
>
> Buenas Pedro. No sé si a alguno mas le a ocurrido esto, pero me e quedado
>> en el tiempo.
>> La falta de retro compatibilidad me dejaron en un python y un gtk el cual
>> estoy acostumbrado a usar.
>> Vivo prometiéndome hacer el salto, pero los tiempos y las obligaciones
>> siempre me hacen ir a lo seguro.
>>
>> * "lo urgente no deja tiempo para lo importante" *
>>
>>
>> El 22 de marzo de 2014, 9:21, Pedro Jose Pezzarini <jose2190 en gmail.com>escribió:
>>
>> Recuerda que PyGTK está deprecado, deberías usar GObject para
>>> python/python3
>>> Referencia muy útil:
>>> https://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
>>>
>>>
>>> El 21 de marzo de 2014, 18:50, Dario Coria <dservero en gmail.com>escribió:
>>>
>>> Buenas Adrian.
>>>> En lugar de glib.mainloop() utilizo gtk.main(), pero supongo que para
>>>> el caso es lo mismo.
>>>> Lo de io channel de glib nunca e usado, pero ahora me pongo a leer, ya
>>>> tengo por donde empezar al menos
>>>> Para ser mucho mas claro:
>>>>
>>>> class Main:
>>>>     def __init__(self):
>>>>         ...
>>>>         thread.start_new_thread(self.daemon, (serversock,))
>>>>         ...
>>>>
>>>>     def daemon(self, serversock):
>>>>         while 1:
>>>>             clientsock, addr = serversock.accept()
>>>>             ...
>>>>
>>>> if __name__ == "__main__":
>>>>     ob = Main()
>>>>     gtk.main()
>>>>
>>>>
>>>> El 21 de marzo de 2014, 16:36, Adrian Pardini <pardo.bsso en gmail.com>escribió:
>>>>
>>>> 2014-03-21 15:39 GMT-03:00 Dario Coria <dservero en gmail.com>:
>>>>> > El thread del daemon que se encarga de escuchar las nuevas
>>>>> conexiones solo
>>>>> > parece dispararse solo cuando cierro la ventana. ¿?
>>>>> > No sé por donde arrancar, si alguien me tira una idea de porque
>>>>> ocurre esto
>>>>> > les estaría muy agradecido.
>>>>> > Repito:
>>>>> > - todo funciona bien siempre que lo use por consola
>>>>> > - el print dentro del daemon solo ocurre en cuanto cierro la ventana
>>>>>
>>>>>
>>>>> Hola Dario,
>>>>>
>>>>> (sin ver el código) lo mas probable es que haces
>>>>>
>>>>> loop = GLib.MainLoop()
>>>>> loop.run()
>>>>>
>>>>> [resto del proceso?]
>>>>>
>>>>> y hasta que el loop no termina el resto no se ejecuta.
>>>>> Es un requerimiento que esté en otro thread (thread a lo python?).
>>>>> Creo que te va a ser mas util con o sin gtk en el medio usar un IO
>>>>> channel de glib y que te avise cuando hay que atender el socket.
>>>>>
>>>>> saludos.
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Adrian.
>>>>> http://ovejafm.com
>>>>> http://elesquinazotango.com.ar
>>>>> http://www.elarteylatecnologia.com.ar
>>>>> _______________________________________________
>>>>> pyar mailing list pyar en python.org.ar
>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>
>>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>>
>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>>> Argentina - http://www.usla.org.ar
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> pyar mailing list pyar en python.org.ar
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140324/c2dad346/attachment.html>


More information about the pyar mailing list