[pyar] Alguien ha trabajado con QThread de PyQt?

Enrique Alejandro Villafañe villafane.enrique en gmail.com
Sab Jul 11 16:39:10 ART 2015


Bueno he estado leyendo y hasta el momento con su ayuda logre migrar de
Threads de Python a QThread, ya estoy creando poco a poco la interfaz. Si
me trabo en algun paso les estare avisando a ver si me pueden ayudar, en
cuanto el proyecto este terminado se los hago llegar por aca, es un
proyecto personal asi que me gustaria compartirlo a ver si hay algo que
mejorar en el codigo que me puedan recomendar, que seguramente que si
porque apenas es mi primera aplicacion.

Gracias

El 11 de julio de 2015, 13:14, Sebastián Seba <ssebastianj en gmail.com>
escribió:

> El 10 de julio de 2015, 21:38, Gabriel Acosta <
> acostadariogabriel en gmail.com> escribió:
>
>> El funcionamiento es básicamente el mismo a thread de Python, con la
>> diferencia que con QThread al heredar de QObject, podes emitir, conectar
>> señales.
>>
>> class Thread(QThread):
>>     def __init__(self):
>>         QThread.__init__(self)
>>
>>     def run(self):
>>         pass
>>
>> El método run() se ejecuta cuando inicias el thread:
>>
>> self.thread = Thread()
>> self.thread.start()
>>
>> Saludos.
>>
>> Gabriel Acosta
>> http://centaurialpha.github.io
>> On Jul 10, 2015 8:27 PM, "Enrique Alejandro Villafañe" <
>> villafane.enrique en gmail.com> wrote:
>>
>>> Nuevamente escribo con algo referente a las interfaces graficas, ya me
>>> he estudiado el uso de PyQt y gracias a los tutoriales de Gabriel Acosta he
>>> entendido el funcionamiento basico de los widgets y las funciones, pero
>>> resulta que para mi necesidad la cosa va mas complicada de lo que parecia,
>>> yo tengo una aplicacion que se encarga de escuchar por puerto serial unas
>>> tramas, mi aplicacion gracias al modulo threads de python maneja varios
>>> puertos al mismo tiempo y hasta ahi todo el proceso perfecto, el problema
>>> es que ahora para hacerle interfaz grafica mi idea es sencilla, una ventana
>>> con algunos tabs y dentro de los tabs unas tablas, de acuerdo a la cantidad
>>> de puertos que tenga en un txt que ya existe y funciona, deberian crearse
>>> la cantidad de tabs y sus tablas internas para insertar alli de modo visual
>>> lo que va llegando en cada puerto por separado en cada tab. Segun he estado
>>> leyendo para eso tengo que olvidarme del modulo thread de python y trabajar
>>> con el modulo Qthread de PyQt del que solo consegui documentacion en ingles
>>> y realmente no soy muy bueno con ello, aparte de que es mi primera
>>> aplicacion "compleja" real en la que trabajo y no estoy muy diestro. Si
>>> alguien ha utilizado este modulo y me puede explicar como funciona estare
>>> muy agradecido.
>>>
>>> Saludos
>>>
>>> --
>>> Enrique A Villafañe
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>>
>
> Yo hace unos años hice un proyecto similar para un cliente, donde una
> aplicación en Python (y con UI hecha en PyQt) tenía que leer y escribir
> tramas en el puerto serie. No puedo mostrar código pero recuerdo que en ese
> entonces no utilicé QThread sino Threading de Python solamente y no tuve
> problemas en actualizar la UI. El tema está en utilizar Queue adecuadamente
> y mínimamente me sirvió.
>
> Así como comenta Gabriel, las interfaces de QThread de PyQt son bastante
> similares (sino iguales) a las de Thread de Python pero con agregados
> copados como las señales. Por ejemplo, una porción de código que encontré y
> modifiqué era algo como:
>
> class CalcularWorker(QtCore.QObject):
>     def __init__(self):
>         pass
>
> class MainWindow(QtGui.QMainWindow):
>     ...
>
>     calcular_thread = QtCore.QThread(self)                    # Instanciar
> un QThread
>     calcular_worker = CalcularWorker(1, 2, 3)                 # Instanciar
> un worker para que realice el cálculo heavy
>     calcular_worker.moveToThread(calcular_thread)      # Mover cálculo
> heavy al thread
>
>    calcular_thread.finished.connect(lambda: self.hacer_algo_al_terminar())
>    # Al finalizar ejecución del thread, hacer algo.
>    calcular_thread.start()     # Ejecutar thread.
>
>
> Dependiendo del caso, fijate si te conviene crear una nueva clase que
> herede de QThread y en esa clase implementar el método "run" o simplemente
> instanciar un QThread y pasarle como argumento la función.
>
> Saludos.
>
> --
>
> *Sebastián J. Seba*
>
> _______________________________________________
> 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
>



-- 
Enrique A Villafañe

*Telefonos de Contacto*

Celular : +58 412 5151603
Oficina: +58 273 5325224 - +58 273 5321592 - +58 273 5325527
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150711/c402c9fe/attachment-0001.html>


More information about the pyar mailing list