如何在两个不同的对象(类)之间正确连接 pyqtSignal
?我的意思是最佳实践。
看看我为实现目标做了什么:Thermometer
类在 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()
或者有什么更简单/更好的方法吗?
我也坚持(如果可能的话)使用"new"风格的 PyQt 信号。
最佳答案
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()
这就是我根据文档所做的:
http://www.riverbankcomputing.com/static/Docs/PyQt4/html/new_style_signals_slots.html
关于python - 如何在 PyQT 中的类之间连接 pyqtSignal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891465/