tutorial pyqtsignal español python pyqt pyqt4

python - español - Cómo conectar pyqtSignal entre clases en PyQT



qt designer python windows (1)

from PyQt4 import QtCore class Pot(QtCore.QObject): temperatureRaisedSignal = QtCore.pyqtSignal() def __init__(self, parent=None): QtCore.QObject.__init__(self) self.temperature = 1 def Boil(self): self.temperatureRaisedSignal.emit() self.temperature += 1 class Thermometer(): def __init__(self, pot): self.pot = pot self.pot.temperatureRaisedSignal.connect(self.temperatureWarning) def StartMeasure(self): self.pot.Boil() def temperatureWarning(self): print("Too high temperature!") if __name__ == ''__main__'': pot = Pot() th = Thermometer(pot) th.StartMeasure()

Así es como lo habría hecho de acuerdo con los documentos:
http://www.riverbankcomputing.com/static/Docs/PyQt4/html/new_style_signals_slots.html

¿Cómo conectar pyqtSignal entre dos objetos diferentes (clases) CORRECTAMENTE? Me refiero a la mejor práctica.

Mira lo que he hecho para lograr el objetivo: la clase de Thermometer se notifica cuando Pot aumenta su temperatura:

from PyQt4 import QtCore class Pot(QtCore.QObject): temperatureRaisedSignal = QtCore.pyqtSignal() def __init__(self, parent=None): super(Pot, self).__init__(parent) self.temperature = 1 def Boil(self): self.temperature += 1 self.temperatureRaisedSignal.emit() def RegisterSignal(self, obj): self.temperatureRaisedSignal.connect(obj) class Thermometer(): def __init__(self, pot): self.pot = pot self.pot.RegisterSignal(self.temperatureWarning) def StartMeasure(self): self.pot.Boil() def temperatureWarning(self): print("Too high temperature!") if __name__ == ''__main__'': pot = Pot() th = Thermometer(pot) th.StartMeasure()

¿O hay alguna forma más fácil / mejor de hacerlo?

También insisto (si es posible) en el uso de "nuevas" señales de estilo PyQt.