객체지향 | 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 |
댓글