From hiramhzr at gmail.com Fri Apr 1 15:02:30 2016 From: hiramhzr at gmail.com (Hiram) Date: Fri, 01 Apr 2016 19:02:30 +0000 Subject: [Python-mx] Dudas sobre hilos (Pyqt4) Message-ID: Estoy desarrollando una aplicaci?n con pyqt4 , en el script hay una clase que crea un hilo el cual se encarga de ejecutarse cada "x" tiempo y cuando se ejecuta intento cambiar una imagen que muestro en pantalla de la siguiente manera. self.imgCambio = QtGui.QLabel(self) self.imgCambio.setPixmap(QtGui.QPixmap("data/img/imgCambio.png")) self.imgCambio.move(130, 180) self.imgCambio.resize(96, 96) Pero me tira el siguiente error: QObject::setParent: Cannot set parent, new parent is in a different thread QPixmap: It is not safe to use pixmaps outside the GUI thread QPixmap: It is not safe to use pixmaps outside the GUI thread Adjunto un peque?o ejemplo para mostrar el error y la forma en que lo estoy intentando, espero me puedan orientar, desde ya muchas gracias. -- hiram -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: cambioGui.zip Type: application/zip Size: 13607 bytes Desc: not available URL: From markuz at islascruz.org Fri Apr 1 15:16:49 2016 From: markuz at islascruz.org (Marco Antonio Islas Cruz) Date: Fri, 1 Apr 2016 13:16:49 -0600 Subject: [Python-mx] Dudas sobre hilos (Pyqt4) In-Reply-To: References: Message-ID: <271AD170-23E5-430C-BE62-891EA2C918AA@islascruz.org> Hola Hiram, Haz el cambio solo en el hilo donde tienes la GUI (muy probablemente el hilo principal), debe haber una forma en la que puedas revisar una variable en el hilo principal y cada que cambie haces la actualizaci?n del pixmap. Por ejemplo, creas un ciclo cada X tiempo que revise que el pixmap ha cambiado, cambias el pixmap aunque en ese instante no se ver? reflejado, luego usas QApplication.processEvents() para que los eventos de la GUI se procesen y entonces se ver? el cambio reflejado. Espero que de minimo te de un norte, la neta no se mucho de QT. > On Apr 1, 2016, at 1:02 PM, Hiram wrote: > > Estoy desarrollando una aplicaci?n con pyqt4 , en el script hay una clase que crea un hilo el cual se encarga de ejecutarse cada "x" tiempo y cuando se ejecuta intento cambiar una imagen que muestro en pantalla de la siguiente manera. > > self.imgCambio = QtGui.QLabel(self) > self.imgCambio.setPixmap(QtGui.QPixmap("data/img/imgCambio.png")) > self.imgCambio.move(130, 180) > self.imgCambio.resize(96, 96) > > Pero me tira el siguiente error: > QObject::setParent: Cannot set parent, new parent is in a different thread > QPixmap: It is not safe to use pixmaps outside the GUI thread > QPixmap: It is not safe to use pixmaps outside the GUI thread > > Adjunto un peque?o ejemplo para mostrar el error y la forma en que lo estoy intentando, espero me puedan orientar, desde ya muchas gracias. > > -- > hiram > _______________________________________________ > Python-mx mailing list > Python-mx at python.org > https://mail.python.org/mailman/listinfo/python-mx Marco Antonio Islas Cruz markuz at islascruz.org http://www.islascruz.org Linux, Because I?m free Show me the source! From hiramhzr at gmail.com Fri Apr 1 19:32:58 2016 From: hiramhzr at gmail.com (Hiram) Date: Fri, 01 Apr 2016 23:32:58 +0000 Subject: [Python-mx] Dudas sobre hilos (Pyqt4) In-Reply-To: <271AD170-23E5-430C-BE62-891EA2C918AA@islascruz.org> References: <271AD170-23E5-430C-BE62-891EA2C918AA@islascruz.org> Message-ID: Muchas gracias por la informaci?n, Estuve viendo algunos ejemplos y pude actualizar la imagen desde el hilo principal, la actualizo cuando el hilo secundario me cambia una bandera leo esa variable y logro cambiar la imagen, el problema es que no se como poder ejecutar la funci?n que cambia la funci?n cada n tiempo sin usar otro hilo ya que si lo genero vuelve a pasar lo mismo, ac? un poco de c?digo de lo que comento. #!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui from PyQt4 import QtCore from time import strftime import time import threading import subprocess from PyQt4.QtGui import QApplication class cambiarImagen(threading.Thread): def __init__(self, parent): threading.Thread.__init__(self) self.parent = parent def run(self): while(True): time.sleep(0.5) self.parent.ok = self.parent.cambio() print self.parent.ok class mainWin(QtGui.QMainWindow): def __init__(self): super(mainWin, self).__init__() self.initUI() self.esS = cambiarImagen(self) self.esS.daemon = True self.esS.start() self.ok = True QtCore.QTimer.singleShot(2000, self.runLoop) def initUI(self): self.imgCobrar = QtGui.QLabel(self) self.imgCobrar.setPixmap(QtGui.QPixmap("ok.png")) self.imgCobrar.move(0,5) self.imgCobrar.resize(96, 96) self.setGeometry(300, 300, 200, 240) self.setWindowTitle('Test') self.show() def runLoop(self): print 'lo ejecute desde el hilo principal' if self.ok == False: self.imgCobrar.setPixmap(QtGui.QPixmap("no.png")) QtGui.qApp.processEvents() else: print 'No cambio la imagen' def cambio(self): print 'lo ejecute desde el hilo secundario' if self.ok == True: return False else: return True #from time import sleep #self.imgCobrar.setPixmap(QtGui.QPixmap("no.png")) #QtGui.qApp.processEvents() #sleep(1) def main(): app = QtGui.QApplication(sys.argv) ex = mainWin() ex.show() sys.exit(app.exec_()) if __name__ == '__main__': main() Ahora la situaci?n es como ejecutar la funci?n runLoop cada cierto tiempo desde el hilo principal. Desde ya muchas gracias. -- Hiram -------------- next part -------------- An HTML attachment was scrubbed... URL: From ecazarez at gmail.com Fri Apr 1 20:01:55 2016 From: ecazarez at gmail.com (Edmundo Cazarez) Date: Sat, 02 Apr 2016 00:01:55 +0000 Subject: [Python-mx] Dudas sobre hilos (Pyqt4) In-Reply-To: References: <271AD170-23E5-430C-BE62-891EA2C918AA@islascruz.org> Message-ID: Hola Hiram, Tu problema no tiene que ver con Qt, si no con los threads. Regularmente cuando quieres comunicarte entre threads lo haces con una de dos formas: a) utilizas un recurso compartido entre todos los threads (p. ej. una variable global al programa o un archivo de entrada/salida, protegido por mecanismos de mutex -- un token o un sem?foro -- para asegurar que las actualizaciones a este recurso se realizan de forma correcta en el contexto de tu problema) b) utilizando "mensajes" entre los threads. Para eso puedes usar una cola en la que pongas los elementos que indiquen para que thread es el mensaje y cual es el mensaje que estas enviando. Saludos. -- Edmundo. On Fri, Apr 1, 2016 at 5:38 PM Hiram wrote: > Muchas gracias por la informaci?n, > > Estuve viendo algunos ejemplos y pude actualizar la imagen desde el hilo > principal, la actualizo cuando el hilo secundario me cambia una bandera leo > esa variable y logro cambiar la imagen, el problema es que no se como poder > ejecutar la funci?n que cambia la funci?n cada n tiempo sin usar otro hilo > ya que si lo genero vuelve a pasar lo mismo, ac? un poco de c?digo de lo > que comento. > > #!/usr/bin/python > # -*- coding: utf-8 -*- > > import sys > from PyQt4 import QtGui > from PyQt4 import QtCore > from time import strftime > import time > import threading > import subprocess > from PyQt4.QtGui import QApplication > > class cambiarImagen(threading.Thread): > def __init__(self, parent): > threading.Thread.__init__(self) > self.parent = parent > > def run(self): > while(True): > time.sleep(0.5) > self.parent.ok = self.parent.cambio() > print self.parent.ok > > > class mainWin(QtGui.QMainWindow): > def __init__(self): > super(mainWin, self).__init__() > self.initUI() > self.esS = cambiarImagen(self) > self.esS.daemon = True > self.esS.start() > self.ok = True > QtCore.QTimer.singleShot(2000, self.runLoop) > > def initUI(self): > self.imgCobrar = QtGui.QLabel(self) > self.imgCobrar.setPixmap(QtGui.QPixmap("ok.png")) > self.imgCobrar.move(0,5) > self.imgCobrar.resize(96, 96) > > self.setGeometry(300, 300, 200, 240) > self.setWindowTitle('Test') > self.show() > > def runLoop(self): > print 'lo ejecute desde el hilo principal' > if self.ok == False: > self.imgCobrar.setPixmap(QtGui.QPixmap("no.png")) > QtGui.qApp.processEvents() > else: > print 'No cambio la imagen' > > def cambio(self): > print 'lo ejecute desde el hilo secundario' > if self.ok == True: > return False > else: > return True > #from time import sleep > #self.imgCobrar.setPixmap(QtGui.QPixmap("no.png")) > #QtGui.qApp.processEvents() > #sleep(1) > > def main(): > app = QtGui.QApplication(sys.argv) > ex = mainWin() > ex.show() > sys.exit(app.exec_()) > > > if __name__ == '__main__': > main() > > Ahora la situaci?n es como ejecutar la funci?n runLoop cada cierto tiempo > desde el hilo principal. > > Desde ya muchas gracias. > -- > Hiram > _______________________________________________ > Python-mx mailing list > Python-mx at python.org > https://mail.python.org/mailman/listinfo/python-mx > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jza at gultab.org Thu Apr 28 11:39:36 2016 From: jza at gultab.org (Alexandro Colorado) Date: Thu, 28 Apr 2016 10:39:36 -0500 Subject: [Python-mx] Chat de PythonMexico en Github Message-ID: Hola, solo para recordarle a la gente que tenemos un canal de Gitter en Github de PythonMexico si estan interesados, el canal tambien esta ligado al de IRC en Freenode #PythonMx PSA Out!! -- Alexandro Colorado GULTab.org Linux User # 319286 Blog: http://www.alexandrocolorado.org/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From acolorado at gmail.com Thu Apr 28 11:36:50 2016 From: acolorado at gmail.com (JZA) Date: Thu, 28 Apr 2016 10:36:50 -0500 Subject: [Python-mx] Chat de PythonMexico en Github Message-ID: Hola, solo para recordarle a la gente que tenemos un canal de Gitter en Github de PythonMexico si estan interesados, el canal tambien esta ligado al de IRC en Freenode #PythonMx PSI Out!! -- Alexandro Colorado Apache OpenOffice Contributor 9060 55AB FFD2 2F02 0E1A 3409 599C 14FC 9450 D3CF -------------- next part -------------- An HTML attachment was scrubbed... URL: From hiramhzr at gmail.com Fri Apr 29 14:02:49 2016 From: hiramhzr at gmail.com (Hiram) Date: Fri, 29 Apr 2016 18:02:49 +0000 Subject: [Python-mx] Actualizar una imagen en pyqt4 Message-ID: Hola, Estoy intentando refrescar una imagen en una ventana esto lo logro de esta manera, self.imgDefault.setPixmap(QtGui.QPixmap("img/ok.Jpeg")) QtGui.qApp.processEvents() Lo cual actualiza la imagen que tenia y en su lugar coloca la imagen ok.jpeg, ahora lo que quiero hacer es regresar la imagen que estaba en un principio dejando un tiempo para que se pueda visualizar el cambio de imagen, lo estoy intentando de esta manera: self.imgDefault.setPixmap(QtGui.QPixmap("img/ok.Jpeg")) QtGui.qApp.processEvents() time.sleep(2) self.imgDefault.setPixmap(QtGui.QPixmap("img/no.Jpeg")) QtGui.qApp.processEvents() Pero esta forma solo me muestra la segunda imagen y no se alcanza a visualizar el cambio entre ellas. Alguien me puede orientar en como actualizar la imagen con cierto tiempo entre el cambio. Desde ya muchas gracias. Hiram -------------- next part -------------- An HTML attachment was scrubbed... URL: From zodman at gmail.com Fri Apr 29 14:19:16 2016 From: zodman at gmail.com (Andres Vargas - zodman) Date: Fri, 29 Apr 2016 13:19:16 -0500 Subject: [Python-mx] Actualizar una imagen en pyqt4 In-Reply-To: References: Message-ID: El 29 de abril de 2016, 13:02, Hiram escribi?: > time.sleep(2) no uses time.sleep ya que bloquea el thread de ejecucion de la aplicacion ... -- Andres Vargas www.zodman.com.mx -------------- next part -------------- An HTML attachment was scrubbed... URL: From hiramhzr at gmail.com Fri Apr 29 16:42:07 2016 From: hiramhzr at gmail.com (Hiram) Date: Fri, 29 Apr 2016 20:42:07 +0000 Subject: [Python-mx] Actualizar una imagen en pyqt4 In-Reply-To: References: Message-ID: @Andres. Muchas Gracias Ya solucione la situaci?n, gracias. Hiram El vie., 29 de abr. de 2016 a la(s) 13:19, Andres Vargas - zodman < zodman at gmail.com> escribi?: > > El 29 de abril de 2016, 13:02, Hiram escribi?: > >> time.sleep(2) > > > no uses time.sleep ya que bloquea el thread de ejecucion de la aplicacion > ... > > > -- > Andres Vargas > www.zodman.com.mx > _______________________________________________ > Python-mx mailing list > Python-mx at python.org > https://mail.python.org/mailman/listinfo/python-mx > -------------- next part -------------- An HTML attachment was scrubbed... URL: From zodman at gmail.com Sat Apr 30 17:00:52 2016 From: zodman at gmail.com (Andres Vargas - zodman) Date: Sat, 30 Apr 2016 16:00:52 -0500 Subject: [Python-mx] Actualizar una imagen en pyqt4 In-Reply-To: References: Message-ID: como ? pon el snippet! El 29 de abril de 2016, 15:42, Hiram escribi?: > @Andres. Muchas Gracias > > Ya solucione la situaci?n, gracias. > > Hiram > > El vie., 29 de abr. de 2016 a la(s) 13:19, Andres Vargas - zodman < > zodman at gmail.com> escribi?: > >> >> El 29 de abril de 2016, 13:02, Hiram escribi?: >> >>> time.sleep(2) >> >> >> no uses time.sleep ya que bloquea el thread de ejecucion de la aplicacion >> ... >> >> >> -- >> Andres Vargas >> www.zodman.com.mx >> _______________________________________________ >> Python-mx mailing list >> Python-mx at python.org >> https://mail.python.org/mailman/listinfo/python-mx >> > > _______________________________________________ > Python-mx mailing list > Python-mx at python.org > https://mail.python.org/mailman/listinfo/python-mx > > -- Andres Vargas www.zodman.com.mx -------------- next part -------------- An HTML attachment was scrubbed... URL: