이번 시간에는 GUI와 기능을 연결지어 기능을 하는 UI를 만들어 보려고 한다.

 

이에 앞서 시그널과 슬롯에 대해 먼저 알아야 하는데,

 

시그널이란?


" 시그널 : 어떤 일이 발생할 때 보내지는 알림 "

 

예를 들면, 버튼을 누르거나, 입력란에 텍스트가 바뀌거나, 윈도우 텍스트가 입력되거나...

 

이런 시그널이 전송이 되면 슬롯에서 해당 시그널을 수신하게 되고,

슬롯에 저장되어있는 함수가 시그널을 인식하고 지정한 함수를 수행하게 되는것이다.

 

슬롯이란?


" 슬롯 : 시그널 수신기, 수신한 시그널로 부터 지정한 함수를 수행한다."

 

도식화 하면 아래와 같이 왼쪽에 있는 시그널이 들어가면

해당 시그널에 맞는 동작을 슬롯에서 수행하게 되는것

 

 

이제, 위의 내용을 예제로 만들어 보려고 한다.

아래 내용을 보면 button을 QPushButton 위젯으로 설정하고

클릭 시그널이 들어오면 the_btn_was_clicked func이 수행되도록 슬롯을 설정 해주었다. 

따라서 아래 위젯을 클릭하면 clicked가 print된다.

from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("My App")
        button = QPushButton("Press Me")
        button.setCheckable(True)          #QPushButton위젯을 클릭할수 있게 설정
        button.clicked.connect(self.the_btn_was_clicked) #button에 클릭시그널을 the_btn...함수에 연결
        self.setCentralWidget(button)
        
    def the_btn_was_clicked(self):
        print("clicked") # click시그널이 오면 해당 함수가 수행된다.
        
def main():

    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    app.exec()

if __name__ == "__main__":
    main()

 

 

 

UI에서 특정 동작을 하도록 만드는 내용을 정리하면 다음과 같다.

 

1. 특정 위젯 생성

2. 시그널을 해당 위젯에 연결

3. 연결시 동작할 func 생성

 

 

 


참고

-  도서  "파이썬과 Qt6로 GUI 애플리케이션 만들기"

 

+ Recent posts