파이썬으로 tkinter 애플리케이션을 실행하면 위젯, 프레임 등 다양한 요소로 구성된 GUI 창이 화면에 나타납니다. 그렇다면 버튼 클릭처럼 특정 동작을 통해 애플리케이션을 종료하려면 어떻게 해야 할까요?
이때 사용하는 것이 바로 destroy() 메서드입니다. 이 메서드는 mainloop가 실행 중인 애플리케이션의 정상적인 동작을 종료하고 창을 닫는 역할을 합니다.
예제 코드
아래 예제에서는 클릭하면 애플리케이션을 종료하는 버튼(Button) 객체를 생성해 보겠습니다.
# tkinter 라이브러리 임포트
from tkinter import *
# tkinter 프레임 인스턴스 생성
win = Tk()
# 창 크기 설정
win.geometry("650x250")
# 창을 닫는 함수 정의
def close_app():
win.destroy()
# 텍스트 라벨 생성
Label(win, text= "Click to close the Window", font= ('Helvetica bold', 14)).pack(pady=20)
# 창을 닫기 위한 버튼 생성
button= Button(win, text= "Close", command= close_app, font=('Helvetica bold', 10))
button.pack(pady=10)
win.mainloop()실행 결과
위 코드를 실행하면 다음과 같이 'Close' 버튼이 포함된 창이 화면에 나타납니다.

이제 'Close' 버튼을 클릭하면 close_app() 함수가 호출되어 win.destroy()가 실행되고, 창이 닫히면서 애플리케이션이 정상적으로 종료됩니다.
핵심 정리
- destroy(): 해당 위젯 또는 창을 완전히 소멸시키고 mainloop를 종료하는 메서드입니다.
- command 옵션: 버튼이 클릭되었을 때 실행할 함수를 지정합니다.
- mainloop(): 이벤트 루프를 시작하여 사용자 입력 등의 이벤트를 처리합니다.
이처럼 destroy() 메서드를 활용하면 사용자가 원하는 시점에 GUI 애플리케이션을 깔끔하게 종료할 수 있습니다.