Python tkinter Listbox 위젯에 대해 살펴보겠습니다.
Listbox는 여러 아이템(요소, 항목)들이 표시된 목록 창입니다.
Listbox 만들기
Listbox는 tkinter에 Listbox(window) 함수로 생성합니다. 매개변수로 Listbox가 출력될 window를 넣어줘야 합니다.
생성한 후 listbox.pack() 함수로 Listbox를 window내에 배치합니다.
import tkinter
win = tkinter.Tk();
# Listbox 생성
listbox = tkinter.Listbox(win, width=10, height=5);
listbox.config(borderwidth=3);
listbox.pack();
win.mainloop();
옵션은 다른 위젯들과 마찬가지로 생성하면서 파라미터로 설정해도 되고, config() 함수로 설정할 수 도 있습니다.
위처럼 Listbox를 생성하면 비어있는 목록이 됩니다.
목록이라 함은 당연히 요소들이 있어야겠죠??
Listbox.insert() 함수와 Listbox.delete() 함수로 요소를 추가 및 삭제할 수 있습니다.
# Listbox에 요소 추가하기
listbox.insert(0, '0번 Item');
listbox.insert(1, '1번 Item');
listbox.insert(2, '2번 Item');
listbox.insert(3, '3번 Item');
listbox.insert(4, '4번 Item');
# Listbox에 요소 삭제하기
listbox.delete(0); #0번 index 요소 삭제
listbox.delete(3,4); #3~4번 index 요소 삭제
Listbox의 함수들
| 이름 | 기능 |
| insert(index, item) | index 위치에 item추가 ( item 은 str로 자동 형변환 됩니다. ) |
| delete(start_index, end_index) | start_index 부터, end_index까지 삭제 파라미터를 1개만 넘길경우 해당 index요소 삭제 |
| size() | 요소 개수 반환 |
| activate(index) | index 에 해당하는 요소 선택 |
| curselection() | 선택된 요소들을 튜플로 반환 |
| get(start_index, end_index) | start_index 부터 end_index 까지 요소들을 튜플로 반환 |
| nearest(val) | 현재 보이는 리스트박스 요소들 중 val에 가장 가까운 값 반환 |
| see(index) | index 에 해당하는 요소가 보이도록 리스트박스 위치조정 |
| xview() | 가로스크롤 연결 |
| xview_moveto(num) | 가로스크롤을 이동 ( 0~1 ) |
| yview() | 세로스크롤 연결 |
| yview_moveto(num) | 세로스크롤 이동 ( 0~1 ) |
Listbox의 옵션들
1. Listbox의 디자인 관련
| 이름 | 기능 | 기본값 | 속성 |
| font | Listbox의 글꼴 설정 | TkDefaultFont | font |
| cursor | Listbox의 마우스 커서모양 | pointer, arrow등 cursor속성 | |
| width | Listbox의 길이 | 20 | 숫자 |
| height | Listbox의 높이 | 10 | 숫자 |
| relief | Listbox의 테두리 설정 | flat | flat, solid, ridge, sunken, raised, groove |
| setgrid | Listbox의 격자크기 조정가능 여부 | False | Boolean |
| borderwidth | Listbox의 테두리 두께 | 2 | 숫자 |
| foreground | Listbox의 문자열 색상 | SystemButtonFace | color |
| background | Listbox의 배경 색상 | SystemButtonFace | color |
| selectbackground | Listbox의 선택된요소 블록의 배경색상 | SystemHIghlight | color |
| selectforeground | Listbox의 선택된요소 블록의 문자열 색상 | SystemHighlight | color |
| selectborderwidth | Listbox의 선택된요소 블록의 테두리 두께 | 0 | 숫자 |
| disabledforeground | Listbox의 disabled 상태일때 문자열 색상 | SystemDisabledText | color |
| highlightcolor | Listbox가 선택되었을때 하이라이트 색상 | SystemWindowFrame | color |
| highlightbackground | Listbox가 선택되지 않았을때 하이라이트 색상 | SystemButtonFace | color |
| highlightthickness | Listbox가 선택되었을때 하이라이트 두께 | 0 | 숫자 |
| activestyle | Listbox내 선택된 요소의 표시형태 설정 | underline | underline, none, dotbox |
2. Listbox의 동작 관련
| 이름 | 기능 | 기본값 | 속성 |
| state | Listbox의 상태설정 | normal | normal, readonly, disabled |
| exportselection | Listbox내 요소 선택 유지 | True | Boolean |
| takefocus | Tab키 위젯이동 허용여부 | True | Boolean |
| selectmode | Listbox의 요소 선택방법 | browse | browse, extended, single, multiple |
| xscrollcommand | Listbox의 가로스크롤 위젯 적용 | Scrollbar위젯.set | |
| yscrollcommand | Listbox의 세로스크롤 위젯 적용 | Scrollbar위젯.set |