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

Tkinter의 wait_window() 메소드란? 개념부터 예제까지 완벽 정리

Tkinter의 wait_window() 메소드란?

Tkinter는 애플리케이션 로직을 더욱 강력하고 유지보수하기 쉽게 만들어 주는 다양한 내장 함수를 제공합니다. 그중 wait_window() 메소드는 특정 윈도우가 닫히거나 소멸될 때까지 프로그램의 진행을 잠시 멈추고 대기한 후, 그다음 코드를 실행하도록 돕는 역할을 합니다.

즉, 메인 윈도우의 이벤트보다 특정 이벤트가 반드시 먼저 처리되어야 할 경우, 해당 이벤트가 완료된 시점에 wait_window()를 호출하여 실행 순서를 손쉽게 제어할 수 있습니다.

wait_window()의 활용 사례

wait_window() 메소드는 로그인 창, 설정 팝업, 알림 대화상자처럼 특정 창이 먼저 처리된 후에야 메인 프로그램이 진행되어야 하는 애플리케이션에서 매우 유용하게 사용됩니다. 모달(Modal) 방식의 창 흐름을 구현할 때 필수적인 메소드라고 할 수 있습니다.

예제 코드

아래 예제에서는 최상위(Toplevel) 윈도우를 하나 생성합니다. 이 최상위 윈도우가 닫히는 순간, 메인 윈도우의 이벤트가 즉시 실행됩니다.

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

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

# tkinter 윈도우 크기 설정
win.geometry("700x350")

# 최상위(Toplevel) 윈도우에 Text 위젯 추가
top = Toplevel(win)
top.geometry("450x150")
Label(top, text="This is a TopLevel Window", font=('Aerial 17')).pack(pady=50)

# 최상위 윈도우가 닫힐 때까지 대기
win.wait_window(top)
print("Top Level Window has been Closed!")
win.destroy()

win.mainloop()

실행 결과

위 코드를 실행하면 최상위 윈도우에 라벨 텍스트가 표시되며, 메인 윈도우는 최상위 윈도우가 닫힐 때까지 대기 상태로 유지됩니다.

최상위 윈도우를 닫으면 메인 윈도우도 함께 종료되면서 화면에 다음과 같은 메시지가 출력됩니다.

Top Level Window has been Closed!

참고 팁

wait_window()는 인자로 전달된 위젯이 소멸(destory)될 때까지 대기하는 방식으로 동작합니다. 비슷한 기능으로 특정 변수 값이 변경될 때까지 대기하는 wait_variable()이 있으며, 두 메소드를 적절히 조합하면 복잡한 창 전환 로직도 깔끔하게 구현할 수 있습니다.