Tkinter로 GUI 프로그램을 만들다 보면
데이터를 보기 좋고 효율적으로 표현하고 싶을 때가 있습니다.
바로 그럴 때 유용하게 쓰이는 것이
Tkinterview 위젯입니다.
이번 블로그에서는 Treeview의 기본 개념과
헤더 및 칼럼 설정, 데이터 추가를 간단하게 알아 보겠습니다.
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의 기본 개념과 사용방법을 정리하면
열을 만들고, 제목을 지어준 후
값을 넣는다
이 정도로 요약이 가능하며
해당 기능을 어떻게 수행해야 하는지 간단한 예시코드로 살펴보았습니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ Tkinter ] 파이썬(Python) Tkinter 달력에서 날짜 선택하기 : 달력 표시하기 Tkcalendar (0) | 2024.10.07 |
---|---|
[ Basic ] 파이썬(Python) or 연산자로 값 할당하기 : If문 대신 or 연산자 사용하기 (0) | 2024.10.06 |
[ Playwright ] Playwright를 사용한 파이썬 파일을 exe 파일로 만들기 (0) | 2024.10.04 |
[ ScreenInfo ] 파이썬으로 내 모니터 해상도 확인하기 : 모니터 정보 (2) | 2024.10.03 |
[ Random ] 파이썬 웹스크래핑 무작위 시간만큼 기다리기 (0) | 2024.10.02 |