반응형
<질문>
기본 키워드 인수가 있는 함수가 있습니다. 내 신호에 두 개의 인수가 있으면 두 인수를 모두 전달해야 한다는 오류가 계속 발생하기 때문에 이것을 구현하는 데 문제가 있습니다. 이 문제를 해결할 방법이 있습니까?
class Controller(QWidget):
trigger = pyqtSignal(str, str)
def __init__(self):
self.trigger.connect(self.myfunc)
@pyqtSlot(str, str)
def function(argument, optional_argument=''):
do something
c = Controller()
c.trigger.emit('Hello', 'World') # This works
c.trigger.emit('Hello') # This fails and says I need 2 arguments
<답변1>
신호가 지원하는 유형을 오버로드하는 것 외에도 연결에서 서명을 가리키는 연결을 만들어야 합니다.
import sys
from PyQt5 import QtCore
class Controller(QtCore.QObject):
trigger = QtCore.pyqtSignal([str], [str, str])
def __init__(self):
super(Controller, self).__init__()
self.trigger[str].connect(self.function)
self.trigger[str, str].connect(self.function)
@QtCore.pyqtSlot(str)
@QtCore.pyqtSlot(str, str)
def function(self, argument, optional_argument=''):
print(argument, optional_argument)
def main():
app = QtCore.QCoreApplication(sys.argv)
c = Controller()
c.trigger[str].emit('Hello')
c.trigger[str, str].emit('Hello', 'World')
QtCore.QTimer.singleShot(100, QtCore.QCoreApplication.quit)
sys.exit(app.exec_())
if __name__ == "__main__":
main()
반응형
'개발 > Python' 카테고리의 다른 글
[파이썬] 두 개의 데이터 프레임을 결합하는 방법? (0) | 2022.12.07 |
---|---|
[파이썬] pandas 데이터 프레임 인덱스에 값이 있는지 확인하는 방법 (0) | 2022.12.07 |
[파이썬] scikit-learn에서 계층화된 학습/테스트 분할 (0) | 2022.10.24 |
[파이썬] 오류없이 아무것도 커밋하지 않는 방법은? (0) | 2022.10.24 |