Tkinter 애플리케이션에서 대량의 데이터를 표시해야 할 때는 Treeview 위젯을 활용할 수 있습니다. Treeview는 행과 열로 구성된 테이블 형태로 데이터를 보여주기 때문에, 목록이나 표 형식의 정보를 직관적으로 나타내는 데 매우 유용합니다.
열 너비 설정하기
Treeview 위젯의 열 너비를 조정하려면 column() 메서드에서 width 속성과 stretch 속성을 함께 사용하면 됩니다.
- width: 열의 고정 너비를 픽셀 단위로 지정합니다.
- stretch:
NO로 설정하면 창 크기가 변해도 해당 열의 너비가 늘어나지 않고 지정한 값 그대로 유지됩니다.
예제 코드
다음 예제에서는 프로그래밍 언어 목록을 담은 테이블을 생성합니다. 'ID' 열과 'Programming Language' 열의 너비를 각각 지정하고, stretch 옵션을 비활성화하여 창 크기와 무관하게 일정한 너비를 유지하도록 구성했습니다.
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임 인스턴스 생성
win=Tk()
# tkinter 윈도우 크기 설정
win.geometry("700x350")
# Style 위젯 인스턴스 생성
style=ttk.Style()
style.theme_use('clam')
# Treeview 위젯 추가
tree=ttk.Treeview(win, column=("c1", "c2"), show='headings', height=8)
tree.column("# 1",anchor=CENTER, stretch=NO, width=100)
tree.heading("# 1", text="ID")
tree.column("# 2", anchor=CENTER, stretch=NO)
tree.heading("# 2", text="Programming Language")
# Treeview 위젯에 데이터 삽입
tree.insert('', 'end',text="1",values=('1','C++'))
tree.insert('', 'end',text="2",values=('2', 'Java'))
tree.insert('', 'end',text="3",values=('3', 'Python'))
tree.insert('', 'end',text="4",values=('4', 'Golang'))
tree.insert('', 'end',text="5",values=('5', 'JavaScript'))
tree.insert('', 'end',text="6",values=('6', 'C# '))
tree.insert('', 'end',text="7",values=('6', 'Rust'))
tree.insert('', 'end',text="8",values=('6', 'SQL'))
tree.pack()
win.mainloop()실행 결과
위 코드를 실행하면 프로그래밍 언어 목록과 인덱스가 포함된 테이블이 화면에 표시됩니다. 첫 번째 열(ID)은 width 속성으로 지정한 100픽셀 너비로 고정되며, 두 번째 열(Programming Language) 역시 stretch가 비활성화되어 있어 콘텐츠에 맞는 너비를 유지합니다.

만약 열 너비를 더 넓게 설정하고 싶다면 width 값을 원하는 픽셀 수로 변경하면 되고, 반대로 창 크기에 따라 열이 자동으로 늘어나기를 원한다면 stretch=YES로 설정하면 됩니다.