Как подключить pyqtSignal между классами в PyQT

Как правильно соединить pyqtSignal между двумя разными объектами (классами)? Я имею в виду передовой опыт.

Посмотрите, что я сделал для достижения цели: класс Термометр получает уведомление, когда Pot увеличивает свою температуру:

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()

Или есть что-то попроще / лучший способ сделать это?

Я также настаиваю (если возможно) на использовании сигналов PyQt «нового» стиля.

17
задан afuzzyllama 31 January 2014 в 15:34
поделиться