Tkinter의 Treeview 위젯은 항목들을 계층 구조 형태의 목록으로 표시할 때 사용됩니다. 화면상의 모습은 Windows나 macOS의 파일 탐색기와 비슷하다고 생각하면 이해하기 쉽습니다.
Treeview 위젯으로 여러 항목을 만든 후, 목록 전체를 초기화하고 싶은 경우가 종종 있습니다. 이럴 때는 delete() 함수를 활용하면 됩니다. 핵심은 treeview의 모든 자식 항목을 가져온 뒤, 반복문을 돌면서 각 항목을 하나씩 삭제하는 방식입니다.
예제 코드
아래 예제에서는 프로그래밍 언어를 주제로 트리뷰를 생성하고, delete() 연산을 통해 목록 전체를 비우는 과정을 살펴보겠습니다.
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임 인스턴스 생성
win = Tk()
win.title("프로그래밍 언어 표시 애플리케이션")
# 창 크기 설정
win.geometry("600x200")
# 라벨 생성
ttk.Label(win, text="Treeview(계층 구조)").pack()
# Treeview 인스턴스 생성 및 항목 추가
treeview = ttk.Treeview(win)
treeview.pack()
treeview.insert('', '0', 'i1', text='Language')
treeview.insert('', '1', 'i2', text='FrontEnd')
treeview.insert('', '2', 'i3', text='Backend')
treeview.insert('i2', 'end', 'HTML', text='RUBY')
treeview.insert('i2', 'end', 'Python', text='JavaScript')
treeview.insert('i3', 'end', 'C++', text='Java')
treeview.insert('i3', 'end', 'RUST', text='Python')
treeview.move('i2', 'i1', 'end')
treeview.move('i3', 'i1', 'end')
treeview.move('i2', 'i1', 'end')
win.mainloop()
위 코드를 실행하면 프로그래밍 언어들이 FrontEnd와 Backend로 분류된 계층 구조의 트리뷰가 담긴 창이 나타납니다.
트리뷰 전체 삭제하기
이제 mainloop() 호출 전에 아래 코드를 추가하면 트리뷰의 모든 항목이 제거되고 목록이 완전히 초기화됩니다.
# 트리뷰 목록의 모든 항목 삭제
for item in treeview.get_children():
treeview.delete(item)
실행 결과
get_children() 메서드는 트리뷰의 최상위 항목들을 튜플 형태로 반환합니다. 이 항목들을 순회하면서 delete(item)을 호출하면 각 항목과 그 하위 항목까지 함께 제거됩니다.
함수 호출이 완료되면 창에 있던 트리뷰 목록 전체가 사라지고, 다음과 같이 빈 트리뷰만 화면에 표시됩니다.

이 방식은 검색 결과를 갱신하거나 데이터를 새로 불러오기 전에 기존 목록을 정리해야 할 때 특히 유용하게 활용할 수 있습니다.