Tkinter는 Python에서 GUI 기반 애플리케이션을 개발하기 위한 표준 라이브러리입니다. 이 라이브러리를 활용하면 게임, 도구 프로그램 등 다양한 데스크톱 애플리케이션을 손쉽게 만들 수 있으며, 화면을 구성하는 각종 요소는 위젯(Widget)을 통해 제공됩니다.
애플리케이션을 개발하다 보면 특정 위젯을 잠시 동안 화면에서 숨겨야 하는 경우가 있습니다. 예를 들어 이미지를 몇 초간 보여준 뒤 자동으로 사라지게 하는 기능이 필요할 수 있죠. 이럴 때 사용할 수 있는 것이 바로 pack_forget() 메서드입니다.
위젯 숨기기의 핵심 원리
주의해야 할 점은 위젯을 배치할 때 사용한 지오메트리 관리자(geometry manager)와 동일한 메서드로 숨겨야 한다는 것입니다.
- pack()으로 배치한 위젯 → pack_forget()
- grid()로 배치한 위젯 → grid_forget()
- place()로 배치한 위젯 → place_forget()
그리고 일정 시간이 지난 후에 실행되도록 하려면 Tkinter의 after() 메서드를 함께 사용하면 됩니다. after()는 지정된 밀리초(ms) 시간이 경과한 후 특정 함수를 호출하는 역할을 합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from PIL import Image, ImageTk
# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# 캔버스 위젯 생성
canvas = Canvas(win, width=400, height=300)
canvas.pack()
# 캔버스 위젯에 이미지 추가
img = ImageTk.PhotoImage(file="baseball.png")
canvas.create_image(100, 150, image=img)
# 3초(3000ms) 후 캔버스에서 이미지 숨기기
canvas.after(3000, canvas.pack_forget)
win.mainloop()실행 결과
위 코드를 실행하면 캔버스 위젯 안에 이미지가 나타나며, 약 3초가 지난 후 해당 이미지가 자동으로 화면에서 사라집니다. 이처럼 after()와 *_forget() 메서드를 조합하면 타이머 기반으로 위젯을 표시하거나 숨기는 동적인 UI를 간단하게 구현할 수 있습니다.