본문 바로가기
PyQt5

사용자 정의 Signal

by 자동매매 2022. 4. 30.
객체지향 PyQt5
Event Signal 버튼의 클릭 행위 : 버튼 clicked
Handler Slot 버튼 클릭시 수행할 작업을 지정한 method

[주의] pyQtSignal 객체를 인스턴스 변수로 만드는 것이 아니라 클래스 변수로 만들어야 한다.

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSlot, QObject, pyqtSignal


# 사용자 정의 시그널 사용을 위한 클래스 정의
class CustomSignal(QObject):
    signal = pyqtSignal(int, str)  # 반드시 클래스 변수로 선언할 것

    def run(self):
        tempstr = "emit으로 전달"
        for i in range(1, 11):
            self.signal.emit(i, tempstr)  # run 메서드 실행시 signal의 emit 메서드 사용


class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        customsignal = CustomSignal()  # CustomSignal instance 생성
        customsignal.signal.connect(self.funcEmit)  # 시그널 및 슬롯 연결 설정
        customsignal.run()  # 객체의 run 메서드 실행으로 signal 발생

    # Slot 정의
    @pyqtSlot(int, str)
    def funcEmit(self, i, tempstr):
        self.i = i  # emit을 통해 받은 값을 GUI 객체 변수에 저장
        self.tempstr = tempstr
        print(str(self.i) + "번째 출력 : ", self.tempstr)  # 출력해보기


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    app.exec_()

 

 

'PyQt5' 카테고리의 다른 글

Qt5 예제  (0) 2022.03.21
[PyQt5] Widgets  (0) 2022.02.23
[PyQt] PyQt Designer  (0) 2022.02.21

댓글