애플리케이션에서 대량의 데이터를 다룰 때는 Tkinter가 기본으로 제공하는 Treeview 위젯을 활용하는 것이 가장 효과적입니다. Treeview는 행(Row)과 열(Column)로 구성된 표 형태로 데이터를 보여줄 수 있어, 목록 상자보다 훨씬 체계적인 화면 구성이 가능합니다.
Treeview 위젯을 사용하면 표를 추가하고, 데이터를 삽입하며, 이미 들어 있는 데이터를 자유롭게 조작할 수 있습니다. 이 위젯은 Treeview(parent, column, **options) 생성자를 정의하는 방식으로 간단하게 만들 수 있습니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
s = ttk.Style()
s.theme_use('clam')
# Treeview 위젯 추가
tree = ttk.Treeview(win, column=("c1", "c2", "c3"), show='headings', height=5)
tree.column("# 1", anchor=CENTER)
tree.heading("# 1", text="ID")
tree.column("# 2", anchor=CENTER)
tree.heading("# 2", text="FName")
tree.column("# 3", anchor=CENTER)
tree.heading("# 3", text="LName")
# Treeview 위젯에 데이터 삽입
tree.insert('', 'end', text="1", values=('1', 'Joe', 'Nash'))
tree.insert('', 'end', text="2", values=('2', 'Emily', 'Mackmohan'))
tree.insert('', 'end', text="3", values=('3', 'Estilla', 'Roffe'))
tree.insert('', 'end', text="4", values=('4', 'Percy', 'Andrews'))
tree.insert('', 'end', text="5", values=('5', 'Stephan', 'Heyward'))
tree.pack()
win.mainloop()코드 설명
위 예제에서는 세 개의 열(ID, FName, LName)을 가진 Treeview를 생성했습니다. show='headings' 옵션을 지정하면 트리 구조 대신 표 형태의 헤더가 표시되며, tree.insert() 메서드를 호출할 때마다 새로운 행이 순서대로 추가됩니다. 각 행의 값은 values 매개변수에 튜플 형태로 전달하면 됩니다.
실행 결과
위 코드를 실행하면 ID, 이름(FName), 성(LName) 세 개의 열로 구성된 항목 목록이 화면에 표됩니다. 데이터가 많아질 경우에도 스크롤과 함께 깔끔하게 정렬된 표 형태로 유지되므로, 데이터 관리형 GUI 애플리케이션을 만들 때 매우 유용합니다.