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

Tkinter에서 프레임 내용을 지우는 방법 – destroy()와 winfo_children() 활용하기


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" 버튼이 포함된 창이 나타납니다. 이 버튼은 프레임 내부의 모든 위젯을 대상으로 동작하여 화면을 지우는 역할을 합니다.

Tkinter에서 프레임 내용을 지우는 방법 – destroy()와 winfo_children() 활용하기

이제 "Clear" 버튼을 클릭하면 프레임 안에 있던 모든 위젯이 한꺼번에 사라지는 것을 확인할 수 있습니다.

참고: destroy()와 forget()의 차이

destroy()는 위젯을 완전히 삭제하여 메모리까지 해제하지만, pack_forget()이나 grid_forget()은 위젯을 화면에서 숨기기만 할 뿐 객체 자체는 유지됩니다. 따라서 해당 위젯을 더 이상 사용할 계획이 없다면 destroy()를 사용하는 것이 좋습니다.