Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter(Python)에서 root.destroy()와 root.quit()의 차이점 완벽 정리

Tkinter 윈도우 객체에서 destroy() 메서드를 호출하면 mainloop 프로세스가 종료되고, 창 안에 있는 모든 위젯이 함께 제거됩니다. 즉, Tkinter의 destroy() 메서드는 백그라운드에서 실행 중인 인터프리터를 종료하고 프로그램 자체를 완전히 끝내는 역할을 합니다.

반면 quit() 메서드는 mainloop() 함수 이후의 프로세스만 중지할 때 사용합니다. 두 메서드의 동작 차이는 버튼 객체를 만들어 직접 확인해 볼 수 있습니다.

핵심 차이점 요약

  • destroy(): mainloop를 종료하고 모든 위젯을 파괴하며, Tcl/Tk 인터프리터까지 완전히 종료합니다.
  • quit(): mainloop만 빠져나올 뿐, 위젯과 인터프리터는 그대로 유지됩니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *

# Tkinter 프레임 인스턴스 생성
win = Tk()

# 프레임 크기 설정
win.geometry("650x450")

# 버튼 객체에 사용할 함수 정의
def quit_win():
    win.quit()

def destroy_win():
    win.destroy()

# quit() 메서드 테스트용 버튼
Button(win, text="Quit", command=quit_win,
    font=('Helvetica bold', 20)).pack(pady=5)

# destroy() 메서드 테스트용 버튼
Button(win, text="Destroy", command=destroy_win,
    font=('Helvetica bold', 20)).pack(pady=5)

win.mainloop()

실행 결과

위 코드를 실행하면 "Quit"과 "Destroy"라는 두 개의 버튼이 배치된 창이 화면에 나타납니다.

Tkinter(Python)에서 root.destroy()와 root.quit()의 차이점 완벽 정리

각 버튼을 클릭해 보면 동작의 차이를 확인할 수 있습니다. Quit 버튼은 mainloop만 멈추기 때문에 프로그램이 완전히 종료되지 않는 반면, Destroy 버튼은 창과 함께 애플리케이션 전체를 종료시킵니다.

주의: quit()는 애플리케이션을 갑자기 종료시킬 수 있습니다. 따라서 실행 후에는 작업 관리자 등을 통해 프로그램이 완전히 닫혔는지 확인하고, 남아 있는 프로세스가 있다면 직접 종료해 주는 것이 좋습니다.