창 닫기

../_images/2_3_closing_sample.png

../_images/2_3_closing_sample2.png

창을 닫는 가장 간단한 방법은 타이틀바의 오른쪽 (Windows) 또는 왼쪽 (macOS) ‘X’ 버튼을 클릭하는 것입니다.

이번에는 프로그래밍을 통해 창을 닫는 법을 알아보겠습니다.

시그널 (Signal)과 슬롯 (Slot)에 대해서도 간단하게 다뤄보겠습니다.


예제

## Ex 3-3. 창 닫기.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import QCoreApplication


class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        btn = QPushButton('Quit', self)
        btn.move(50, 50)
        btn.resize(btn.sizeHint())
        btn.clicked.connect(QCoreApplication.instance().quit)

        self.setWindowTitle('Quit Button')
        self.setGeometry(300, 300, 300, 200)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

‘Quit’ 버튼을 만들었습니다.

이제 이 버튼을 클릭하면 어플리케이션이 종료됩니다.



설명

from PyQt5.QtCore import QCoreApplication

QtCore 모듈의 QCoreApplication 클래스를 불러옵니다.



btn = QPushButton('Quit', self)

푸시버튼을 하나 만듭니다. 이 버튼 (btn)은 QPushButton 클래스의 인스턴스입니다.

생성자 (QPushButton())의 첫번째 파라미터에는 버튼에 표시될 텍스트를 입력하고, 두번째 파라미터에는 버튼이 위치할 부모 위젯을 입력합니다.

푸시버튼 위젯에 대한 자세한 설명은 QPushButton 페이지 설명을 참고하세요.



btn.clicked.connect(QCoreApplication.instance().quit)

PyQt5에서의 이벤트 처리는 시그널과 슬롯 메커니즘으로 이루어집니다.

버튼 (btn)을 클릭하면 ‘clicked’ 시그널이 만들어집니다.

instance() 메서드는 현재 인스턴스를 반환합니다.

‘clicked’ 시그널은 어플리케이션을 종료하는 quit() 메서드에 연결됩니다.

이렇게 발신자 (Sender)와 수신자 (Receiver), 두 객체 간에 커뮤니케이션이 이루어집니다. 이 예제에서 발신자는 푸시버튼 (btn)이고, 수신자는 어플리케이션 객체 (app)입니다.



결과

../_images/2_3_closing.png ../_images/2_3_closing_mac.png

그림 3-3. 창 닫기 버튼 만들기.


관련 페이지

이전글/다음글