Python tkinter 강좌 : 제 30강 – Treeview

   

Treeview (표)


1 Treeview을 이용하여 행과 열로 구성된 를 생성할 수 있습니다.



Treeview 사용


import tkinter
import tkinter.ttk

window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(False, False)

def cc(self):
    treeview.tag_configure("tag2", background="red")

treeview=tkinter.ttk.Treeview(window, columns=["one", "two"], displaycolumns=["two", "one"])
treeview.pack()

treeview.column("#0", width=70)
treeview.heading("#0", text="num")

treeview.column("one", width=100, anchor="center")
treeview.heading("one", text="문자", anchor="e")

treeview.column("#2", width=100, anchor="w")
treeview.heading("two", text="ASCII", anchor="center")

treelist=[("A", 65), ("B", 66), ("C", 67), ("D", 68), ("E", 69)]

for i in range(len(treelist)):
    
    treeview.insert('', 'end', text=i, values=treelist[i], iid=str(i)+"번")

top=treeview.insert('', 'end', text=str(len(treelist)), iid="5번", tags="tag1")
top_mid1=treeview.insert(top, 'end', text="5-2", values=["SOH", 1], iid="5번-1")
top_mid2=treeview.insert(top, 0, text="5-1", values=["NUL", 0], iid="5번-0", tags="tag2")
top_mid3=treeview.insert(top, 'end', text="5-3", values=["STX", 2], iid="5번-2", tags="tag2")

treeview.tag_bind("tag1", sequence="<<TreeviewSelect>>", callback=cc)

window.mainloop()


import tkinter.ttk


상단에 import tkinter.ttk를 사용하여 ttk 모듈을 포함시킵니다. tkinter.ttk 함수의 사용방법은 tkinter.ttk.*를 이용하여 사용이 가능합니다.


def cc(self):
    treeview.tag_configure("tag2", background="red")

treeview=tkinter.ttk.Treeview(window, columns=["one", "two"], displaycolumns=["two", "one"])
treeview.pack()

treeview.column("#0", width=70)
treeview.heading("#0", text="num")

treeview.column("one", width=100, anchor="center")
treeview.heading("one", text="문자", anchor="e")

treeview.column("#2", width=100, anchor="w")
treeview.heading("two", text="ASCII", anchor="center")

treelist=[("A", 65), ("B", 66), ("C", 67), ("D", 68), ("E", 69)]

for i in range(len(treelist)):
    
    treeview.insert('', 'end', text=i, values=treelist[i], iid=str(i)+"번")

top=treeview.insert('', 'end', text=str(len(treelist)), iid="5번", tags="tag1")
top_mid1=treeview.insert(top, 'end', text="5-2", values=["SOH", 1], iid="5번-1")
top_mid2=treeview.insert(top, 0, text="5-1", values=["NUL", 0], iid="5번-0", tags="tag2")
top_mid3=treeview.insert(top, 'end', text="5-3", values=["STX", 2], iid="5번-2", tags="tag2")

treeview.tag_bind("tag1", sequence="<<TreeviewSelect>>", callback=cc)

tkinter.ttk.Treeview(윈도우 창, 파라미터1, 파라미터2, 파라미터3, ...)을 사용하여 표의 속성을 설정할 수 있습니다.

표.column(), 표.heading()을 이용하여 을 설정할 수 있습니다.

표.insert()를 이용하여 을 설정할 수 있습니다.

변수 이름iid는 서로 대체하여 사용할 수 있습니다.



Treeview Method###


표 메소드 (1)
이름의미
column(col, column_option)표 열의 속성을 설정
heading(col, heading_option)표의 행 제목 설정
insert(상위 항목, 삽입 위치, option)표에 항목을 삽입 위치에 삽입
item(iid, option)iid 값을 가지는 항목을 수정
move(iid, 상위 항목, 삽입 위치)iid 값을 가지는 항목을 상위 항목의 삽입 위치로 이동
reattach(iid, 상위 항목, 삽입 위치)iid 값을 가지는 항목을 상위 항목의 삽입 위치로 이동 (move와 동일)
delete(iid)iid 값을 가지는 항목 삭제
detach(iid)iid 값을 가지는 항목 연결 해제 및 숨김
index(iid)iid 값을 가지는 항목의 index 값 반환
focus(iid)iid 값을 가지는 항목에 포커스
xview()가로스크롤 연결
yview()세로스크롤 연결


  • Tip : col : #0은 열의 첫번째 위치를 의미, #1, #2, #3, … 또는 열의 이름1, 열의 이름2, 열의 이름3, …을 이용하여 열을 선택 가능



표 메소드 column_option
이름의미기본값속성
anchor행 제목의 문자열 위치 설정wn, e, w, s, ne, nw, se, sw, center
width열의 너비200상수
minwidth열의 최소 너비20상수
stretch위젯 크기 조정 시 열의 너비 조정 설정 여부TRUEBoolean



표 메소드 heading_option
이름의미기본값속성
text행 제목의 이름-문자열
image행 제목의 이미지--
anchor열의 문자열 위치 설정wn, e, w, s, ne, nw, se, sw, center
command행 제목을 클릭할 때 실행하는 메소드(함수)-메소드, 함수



표 메소드 option
이름의미기본값속성
text표 항목에 표시할 텍스트-문자열
image표에 포함할 임의 이미지--
values표 행에 포함될 항목--
open표의 하위 항목 숨김 여부FalseBoolean
tags표의 태그 이름 설정-문자열
iid표의 고유값 설정--



표 메소드 (2)
이름의미
bbox(iid, column=상수)iid 값을 가지는 행과 column 값의 (width, height, x, y) 값 반환
get_children()표의 하위 항목 반환
get_children(iid)iid 값을 가지는 하위 항목 반환
set_children(iid, 하위 iid, 하위 iid, … )iid 값을 가지는 상위 항목에서 하위 iid값을 가지는 항목만 남김
exists(iid)iid 값을 가지는 항목이 있다면 참 값 반환
identify(component, x, y)표의 x, y 위치에 지정된 component의 세부 사항 반환
identify_row(y)표의 y 위치의 iid 값을 반환
identify_column(x)표의 x 위치의 열 식별자 반환
identify_element(x, y)표의 x, y 위치에 요소를 반환
identify_region(x, y)표의 x, y 위치에 세부 사항 반환
next(iid)iid 값을 가지는 항목의 다음 순서 iid 값 반환
parent(iid)iid 값을 가지는 항목의 상위 항목 반환
prev(iid)iid 값을 가지는 항목의 이전 순서 iid 값 반환
see(iid)iid 값을 가지는 항목이 보이는지 확인
selection_set(iid)iid 값을 가지는 항목 선택
selection_add(iid)iid 값을 가지는 항목 다중 선택
selection_remove(iid)iid 값을 가지는 항목 선택 취소
selection_toggle(iid)iid 값을 가지는 항목 반전 선택
set(iid)iid 값을 가지는 항목의 사전 값 반환
set(iid, column=col)iid 값을 가지는 항목에서 col의 값 반환
set(iid, column=col, value=val)iid 값을 가지는 항목에서 col의 값을 val로 변경


  • component : element, region, item, column, row

  • identify_region(x, y)의 반환값

    • heading : 행 제목
    • separator : 사이 간격 선
    • tree : 열 제목
    • cell : 셀 영역



표 태그 메소드
이름의미속성
tag_bind(태그 이름, sequence=”이벤트”, callback=함수)태그 이름의 목록에서 이벤트가 실행되었을 때 함수를 실행-
tag_configure(태그 이름, tag_option)태그 이름에 형태 설정-
tag_has(태그 이름)태그 이름에 할당된 iid 값 반환-
tag_has(태그 이름, item=iid)태그 이름과 iid 값 비교Boolean



표 태그 메소드 sequence
이름의미
«TreeviewSelect>표의 항목이 선택될 때
«TreeviewOpen»표의 항목을 열 때
«TreeviewClose»표의 항목을 닫을 때



표 태그 메소드 tag_option
이름의미기본값속성
background표의 배경 색상SystemButtonFacecolor
foreground표의 문자열 색상SystemButtonFacecolor
image표에 포함할 임의 이미지--
font표 안의 문자열 글꼴 설정TkDefaultFontfont



Treeview Parameter


표 형태 설정
이름의미기본값속성
height표의 행 높이10상수
padding표의 여백0상수



표 형식 설정
이름의미기본값속성
cursor표의 마우스 커서 모양-커서 속성
class_클래스 설정--
columns표의 열 이름 설정-리스트
displaycolumns표의 열 순서 설정-리스트
selectmode표의 선택 형식 설정extendedextended, browse, none
show표의 제목 표시 여부tree headingstree headings, tree, headings



표 동작 설정
이름의미기본값속성
takefocusTab 키를 이용하여 위젯 이동 허용 여부FalseBoolean



참고

  • cursor 파라미터

    • arrow, based_arrow_down, based_arrow_up, boat, bogosity, bottom_left_corner, bottom_right_corner, bottom_side, bottom_tee, box_spiral, center_ptr, circle, clock, coffee_mug, cross, cross_reverse, crosshair, diamond_cross, dot, dotbox, double_arrow, draft_large, draft_small, draped_box, exchange, fleur, gobbler, gumby, hand1, hand2, heart, icon, iron_cross, left_ptr, left_side, left_tee, leftbutton, ll_angle, lr_angle, man, middlebutton, mouse, pencil, pirate, plus, question_arrow, right_ptr, right_side, right_tee, rightbutton, rtl_logo, sailboat, sb_down_arrow, sb_h_double_arrow, sb_left_arrow, sb_right_arrow, sb_up_arrow, sb_v_double_arrow, shuttle, sizing, spider, spraycan, star, target, tcross, top_left_arrow, top_left_corner, top_right_corner, top_side, top_tee, trek, ul_angle, umbrella, ur_angle, watch, wait, xterm, X_cursor

  • selectmode 파라미터

    • extended : Ctrl 키 또는 Shift 키를 활용하여 모록을 다중 선택 가능
    • browse : 한 번에 하나의 목록만 선택 가능
    • none : 목록 선택 불가

  • show 파라미터

    • tree headings : 행 제목과 열 제목 표시
    • tree : 행 제목 표시하지 않음
    • headings : 열 제목 표시하지 않음


도움이 되셨다면 광고 클릭 부탁드립니다.

⤧  Next post Python tkinter 강좌 : 제 31강 – Separator ⤧  Previous post Python tkinter 강좌 : 제 29강 – Sizegrip