내가 본 예 :이 같은PyQt 4에서 이벤트를 처리하는 올바른 방법은 무엇입니까? 이 같은
self.connect(self.ui.add_button, QtCore.SIGNAL('clicked()'),self.printer)
그리고 예 : 난 그냥 Qt를 배우고 시작하고
self.ui.add_button.clicked.connect(self.printer)
; 어느 쪽을 집중해야합니까?
내가 본 예 :이 같은PyQt 4에서 이벤트를 처리하는 올바른 방법은 무엇입니까? 이 같은
self.connect(self.ui.add_button, QtCore.SIGNAL('clicked()'),self.printer)
그리고 예 : 난 그냥 Qt를 배우고 시작하고
self.ui.add_button.clicked.connect(self.printer)
; 어느 쪽을 집중해야합니까?
두 번째 예제는 일부 Qt 버전 (새로운 버전)에서만 지원되는 반면, 첫 번째 버전은 이전 버전에서 지원됩니다. 하지만 둘 다 맞습니다. 과부하 신호가있는 경우
AFAIK는 새로운 스타일은 당신이 좋겠 그래서
self.ui.add_button.clicked.connect(self.printer)
말하자면, 또한이 있다면
사용할 수 없습니다 하는
clicked(float, float)
그렇게 작동하지 않습니다 더 오래된 스타일로 돌아 가야한다. 항상 둘 다 알고있는 것이 좋습니다.
이 게시물은 꽤 오래 알고 있지만 난 그냥 어쩌면 당신도 지금이 하루를 저장합니다, 그것은 우연히 발견했다; yey, 확인 ... 그런데 , 그것은 그래서 여기에 내 첫 번째 게시물입니다) !
경고, 나는이 코드를 테스트하지 않았다, 난 그냥 코드의 일부 조각을 복사 내가 얼마 전에 쓴, 그래서 약간의 오차가있을 수 있습니다,하지만 난 어쨌든
PyQt는 새로운 스타일의 신호 간단히 도움이되기를 바랍니다 : 당신이 위의 참조 신호
,617에 관한 것입니다, 이벤트 및 신호가 동일하지 :# notice that the signal declarations are at class level (not inside some method)
class MyClass(QObject): # must subclass QObject (or subclass)
# declaring signals
mySimpleSignal = pyqtSignal()
mySignalWithArguments = pyqtSignal(int, list)
myOverloadedSignal = ([int, object],[str,object])
def __init__(self, parent=None):
super(MyClass,self).__init__(parent=parent) # remember to init the super class
[...]
# methods
[...]
# connecting signals
def connectSignalsMethod(self):
# connecting simple signal
self.mySimpleSignal.connect(self.mySlot)
# connecting signal with arguments
self.mySignalWithArguments.connect(self.mySlotWithArguments)
# connecting overloaded signals
self.myOverloadedSignal[int, object].connect(self.mySlot1)
self.myOverloadedSignal[str, object].connect(self.mySLot2)
# same syntax for disconnect()
# emitting signals
def emitSignalsMethod(self):
# emitting simple signal
self.mySimpleSignal.emit()
# emitting signal with arguments
self.mySignalWithArguments.emit(123,['this','is','a','list'])
# emitting overloaded signal
myOverloadedSignal[str,object].emit('this is a string', myObject)
# my slots
@pyqtSlot()
def mySlot(self):
print('hey!')
@pyqtSlot(int, list)
def mySlotWithArguments(self, someNumber, someList):
print('got a number: %d and a list: %s' % (someNumber, someList))
@pyqtSlot(int, object)
def mySlot1(self, intArg, objectArg):
print('got an int and an object')
@pyqtSlot(str, object)
def mySlot2(self, str, object):
print('got a string and an object')
# an overloaded slot
@pyqtSignal(int)
@pyqtSignal(str)
def overloadedSlot(someArgument)
print('got something: %s' % someArgument)
그렇지 않으면,이 http://www.harshj.com/2010/05/06/pyqt-faq-custom-signals-jpeg-mouse-hovers-and-more/#custom
편집을 시도
PyQt 4.5 AFAIK에서 도입되었습니다. –