반응형
<질문>
연결 방법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()
아니면 더 쉽고 더 좋은 방법이 있습니까?
나는 또한 (가능한 경우) "새로운"스타일의 PyQt 신호 사용을 주장합니다.
<답변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()
이것은 문서에 따라 내가 한 방법입니다.
http://www.riverbankcomputing.com/static/Docs/PyQt4/html/new_style_signals_slots.html
반응형
'개발 > Python' 카테고리의 다른 글
대화 형 Python 셸에서 마지막 결과 가져 오기 (0) | 2021.01.12 |
---|---|
[파이썬] non PyQt 클래스에서 신호를 방출하는 방법은 무엇입니까? (0) | 2021.01.11 |
[파이썬] pyqtSlot으로 연결된 슬롯을 장식해야하는 이유는 무엇입니까? (0) | 2021.01.11 |
[파이썬] PyQt connect () 구문이 왜 그렇게 장황합니까? (0) | 2021.01.11 |