Tkinter 프레임(Frame)은 버튼(Button), 입력창(Entry), 라벨(Label), 스크롤바 등 다양한 위젯을 하나로 묶어 화면을 체계적이고 보기 좋게 구성하는 컨테이너 역할을 합니다.
프로그램 실행 중 프레임의 내용을 비우거나 내부의 모든 위젯을 제거해야 하는 경우가 있습니다. 이럴 때 destroy() 메서드를 사용하면 간단하게 해결할 수 있습니다. 이 메서드는 winfo_children() 함수로 프레임의 자식 위젯 목록을 가져온 뒤, 각 위젯에 대해 호출하는 방식으로 활용합니다.
예제 코드
#필요한 라이브러리 임포트
from tkinter import *
#tkinter 프레임 인스턴스 생성
win = Tk()
#프레임 크기 설정
win.geometry("600x250")
#프레임 생성
frame = Frame(win)
frame.pack(side="top", expand=True, fill="both")
#텍스트 라벨 생성
Label(frame, text="Enter the Password", font=('Helvetica', 20)).pack(pady=20)
def clear_frame():
for widgets in frame.winfo_children():
widgets.destroy()
#프레임을 지우는 버튼 생성
Button(frame, text="Clear", font=('Helvetica bold', 10), command=clear_frame).pack(pady=20)
win.mainloop()실행 결과
위 코드를 실행하면 "Clear" 버튼이 포함된 창이 나타납니다. 이 버튼은 프레임 내부의 모든 위젯을 대상으로 동작하여 화면을 지우는 역할을 합니다.

이제 "Clear" 버튼을 클릭하면 프레임 안에 있던 모든 위젯이 한꺼번에 사라지는 것을 확인할 수 있습니다.
참고: destroy()와 forget()의 차이
destroy()는 위젯을 완전히 삭제하여 메모리까지 해제하지만, pack_forget()이나 grid_forget()은 위젯을 화면에서 숨기기만 할 뿐 객체 자체는 유지됩니다. 따라서 해당 위젯을 더 이상 사용할 계획이 없다면 destroy()를 사용하는 것이 좋습니다.