파이썬(Python)

[ Tkinter ] 파이썬 Tkinter TreeView에 대한 기본

카루루1007 2024. 10. 6. 20:48
728x90
반응형

Tkinter로 GUI 프로그램을 만들다 보면

데이터를 보기 좋고 효율적으로 표현하고 싶을 때가 있습니다.

 

바로 그럴 때 유용하게 쓰이는 것이

Tkinterview 위젯입니다.

 

이번 블로그에서는 Treeview의 기본 개념과 

헤더 및 칼럼 설정, 데이터  추가를 간단하게 알아 보겠습니다.

 

728x90

 Treeview 화면 출력하기

 

간단하게 treeview 위젯을 출력해 보겠습니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window)
tree.pack(padx=10, pady=10)

window.mainloop()

 

이 코드를 실행하면 아래 그림과 같이 화면이 출력됩니다.

 

위 이미지에서 하늘색 부분

treeview에서 자동으로 생성하는 Column입니다.

해당 부분에 마우스를 가지고 가면

위 그림과 같이 하늘색으로 바뀝니다.

 

아래에서 보게 될 헤더에서 #0이 이 부분입니다.

이 열은 자동으로 생성되며, 삭제할 수 없습니다.

 

 Columns 만들기

 

Columns데이터를 표시하는 세로 방향의 공간입니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window, columns=("이름", "나이"))
tree.pack(padx=10, pady=10)

window.mainloop()

 

위 코드에서 바뀐 부분은 아래 한 줄입니다.

tree = ttk.Treeview(window, columns=("이름", "나이"))

 

먼저 이름과 나이라는 ID를 갖는 열을 두 개를 만들어 주었습니다.

 

이 코드를 실행하면 다음과 같은 화면이 나타납니다.

빨간색 원 안의 선을 기준으로 열이 3개 만들어 졌습니다.

기존에 자동으로 생성되었던 열 하나에 두 개의 열이 더해져 3개의 열이 만들어진 것입니다.

 

반응형

 Columns에 제목 지정하기

 

Columns에 제목을 지정할 때

heading을 사용합니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window, columns=("이름", "나이"))
tree.pack(padx=10, pady=10)

tree.heading("#0", text="번호")
tree.heading("이름", text="이름")
tree.heading("나이", text="나이")

window.mainloop()

 

위 코드의 실행 결과는 다음과 같습니다.

 

heading() 함수의 첫 번째 인자는 앞서 지정했던 columns의 ID입니다.

즉, 아래 코드에서 지정한 ID를 사용합니다.

columns=("이름", "나이")

 

anchor 인자를 사용하면 정렬을 할 수도 있습니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window, columns=("이름", "나이"))
tree.pack(padx=10, pady=10)

tree.heading("#0", text="번호", anchor="center")
tree.heading("이름", text="이름", anchor="w")
tree.heading("나이", text="나이", anchor="e")

window.mainloop()

 

위 코드의 실행 결과는 다음과 같습니다.

 

이름은 왼쪽 정렬이 되어 있고

나이는 오른쪽 정렬이 되어 있습니다.

 

 Columns의 속성 정하기

 

동일하게 앞서 설정했던 Columns의 ID를 기준으로 접근을 하며

너비 최소 너비, 그리고 정렬 등을 지정할 수 있습니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window, columns=("이름", "나이"))
tree.pack(padx=10, pady=10)

tree.heading("#0", text="번호")
tree.heading("이름", text="이름")
tree.heading("나이", text="나이")

tree.column("#0", width=100, minwidth=50, anchor="center")
tree.column("이름", width=100, minwidth=50, anchor="e")
tree.column("나이", width=100, minwidth=50, anchor="w")

window.mainloop()

 

width기본 너비이며

minwidth는 열의 너비를 마우스로 조정했을 때 조정 할 수 있는 최소 너비입니다.

 

우선 코드를 실행한 결과는 다음과 같습니다.

 

마우스로 열의 너비를 조정해 보겠습니다.

번호와 이름을 보시면 저 너비 이하로는 너비가 조정되지 않습니다.

 

정렬은 되지 않은 것처럼 보이지만,

아직 데이터를 입력하지 않아 보이지 않는 것뿐입니다.

heading에 입력한 텍스트의 정렬에는 관여하지 않습니다.

 

 데이터 입력하기

 

데이터를 입력할 때에는 insert 함수를 사용합니다.

우선 코드와 실행화면을 보겠습니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window, columns=("이름", "나이"))
tree.pack(padx=10, pady=10)

tree.heading("#0", text="번호")
tree.heading("이름", text="이름")
tree.heading("나이", text="나이")

tree.column("#0", width=100, minwidth=50, anchor="center")
tree.column("이름", width=100, minwidth=50, anchor="e")
tree.column("나이", width=100, minwidth=50, anchor="w")

tree.insert('', 'end',text="1", values=("홍길동", 25))

window.mainloop()

 

insert 함수의 첫 번째 인자 '' 가 지정이 되어 있습니다.

이건 항목의 최상위 레벨에 데이터를 넣는다는 의미

우선은 기본적으로 데이터를 넣을 때 ''를 사용합니다.

 

계층 형태로 사용도 가능한데 간단한 예시 실행화면은 다음과 같습니다.

이 블로그에서는 참고만 하시면 되고 이런 식으로도 사용이 가능합니다.

 

다음 두 번째 인자"end"는 아이템을 추가할 위치입니다.

"end"를 사용하면 마지막에 추가가 됩니다.

해당 인자를 변경한 간단한 예시입니다.

import tkinter as tk
from tkinter import ttk

window = tk.Tk()

tree = ttk.Treeview(window, columns=("이름", "나이"))
tree.pack(padx=10, pady=10)

tree.heading("#0", text="번호")
tree.heading("이름", text="이름")
tree.heading("나이", text="나이")

tree.column("#0", width=100, minwidth=50, anchor="center")
tree.column("이름", width=100, minwidth=50, anchor="e")
tree.column("나이", width=100, minwidth=50, anchor="w")

tree.insert('', 'end',text="1", values=("홍길동", 25))
tree.insert('', '0',text="2", values=("김개똥", 25))
tree.insert('', '0',text="3", values=("임꺽정", 25))

window.mainloop()

 

위 코드를 실행하면 아래와 같이 결과가 나타납니다.

 

text는 앞서 말씀드렸던 Treeview를 만들 때 자동으로 생성되었던 열에

값을 넣는 인자입니다.

 

마지막으로 values를 통해 해당 열에 값을 넣습니다.

 

 마치며

 

Treeview의 기본 개념과 사용방법을 정리하면

열을 만들고, 제목을 지어준 후

값을 넣는다

이 정도로 요약이 가능하며

해당 기능을 어떻게 수행해야 하는지 간단한 예시코드로 살펴보았습니다.

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형