Python tkinter 강좌 : 제 26강 - Combobox
Combobox(콤보 박스)
Combobox을 이용하여 텍스트와 허용된 값의 드롭다운 목록을 표시하는 콤보 박스를 생성할 수 있습니다.
Combobox 사용
import tkinter
import tkinter.ttk
window=tkinter.Tk()
window.title("YUN DAE HEE")
window.geometry("640x400+100+100")
window.resizable(False, False)
values=[str(i)+"번" for i in range(1, 101)]
combobox=tkinter.ttk.Combobox(window, height=15, values=values)
combobox.pack()
combobox.set("목록 선택")
window.mainloop()import tkinter.ttk상단에 import tkinter.ttk를 사용하여 ttk 모듈을 포함시킵니다.
tkinter.ttk 함수의 사용방법은 tkinter.ttk.*를 이용하여 사용이 가능합니다.
values=[str(i)+"번" for i in range(1, 101)]
combobox=tkinter.ttk.Combobox(window, height=15, values=values)
combobox.pack()
combobox.set("목록 선택")tkinter.ttk.Combobox(윈도우 창, 매개변수1, 매개변수2, 매개변수3, ...)을 사용하여 콤보 박스의 속성을 설정할 수 있습니다.
매개변수를 사용하여 콤보 박스의 속성을 설정합니다.
values에 전달한 목록이 드롭다운 목록으로 표시되며, set()으로 처음 표시할 문자열을 설정할 수 있습니다.
- Tip :
Combobox는ttk 위젯이므로bg,fg등 일반 위젯의 색상 매개변수를 직접 사용할 수 없으며,tkinter.ttk.Style을 통해 모양을 변경합니다.
Combobox Method
| 이름 | 의미 | 설명 |
|---|---|---|
| set(“문자열”) | 표시값 변경 | 콤보 박스의 현재 텍스트 변경 |
| get() | 표시값 반환 | 콤보 박스의 현재 텍스트 반환 |
| current(index) | 목록 선택 | 해당 index의 목록을 선택하여 표시 |
| current() | 선택 index 반환 | 현재 선택된 목록의 index 반환 (목록에 없는 값이면 -1) |
Combobox Event
def selected(event):
print(combobox.current(), combobox.get())
combobox.bind("<<ComboboxSelected>>", selected)드롭다운 목록에서 항목을 선택하면 <<ComboboxSelected>> 가상 이벤트가 발생합니다.
콤보 박스.bind("<<ComboboxSelected>>", 함수)를 사용하여 항목이 선택될 때 실행할 함수를 설정할 수 있습니다.
- Tip :
set()이나 키보드 입력으로 값이 바뀔 때는<<ComboboxSelected>>이벤트가 발생하지 않습니다.
Combobox Parameter
콤보 박스 텍스트 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| textvariable | 콤보 박스에 표시할 문자열을 가져올 변수 | - | - |
| justify | 콤보 박스의 문자열 정렬 방법 | left | center, left, right |
| font | 콤보 박스의 문자열 글꼴 설정 | TkTextFont | font |
콤보 박스 형태 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| width | 콤보 박스의 너비 | 20 | 상수 |
| height | 콤보 박스의 드롭 다운 목록이 표시할 개수 | 10 | 상수 |
콤보 박스 형식 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| cursor | 콤보 박스의 마우스 커서 모양 | - | 커서 속성 |
| class_ | 클래스 설정 | - | - |
| xscrollcommand | 콤보 박스의 가로스크롤 위젯 적용 | - | Scrollbar위젯.set |
| values | 콤보 박스의 목록 값 | - | list, tuple 등 |
| exportselection | 콤보 박스의 선택 항목 여부 설정 | True | Boolean |
콤보 박스 상태 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| state | 상태 설정 | normal | normal, readonly, disabled |
콤보 박스 동작 설정
| 이름 | 의미 | 기본값 | 속성 |
|---|---|---|---|
| takefocus | Tab 키를 이용하여 위젯 이동 허용 여부 | False | Boolean |
| postcommand | 콤보 박스의 드롭다운 목록이 펼쳐지기 직전에 실행하는 메서드(함수) | - | 메서드, 함수 |
| validate | 콤보 박스의 유효성 검사 실행 조건 | none | none, focus, focusin, focusout, key, all |
| validatecommand | 유효성 검사 평가 함수 | - | 함수 |
| invalidcommand | validateCommand가 False를 반환 할 때 실행할 함수 | - | 함수 |
참고
-
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
-
values를[5, 10, 50, 100]으로 설정하였을 경우,목록의 순서로 드롭다운 목록 표시 -
validate 매개변수
none: 콤보 박스의 유효성 검사 실행하지 않음focus: 콤보 박스가 포커스를 받거나 잃을 때 validateCommand 실행focusin: 콤보 박스가 포커스를 받을 때 validateCommand 실행focusout: 콤보 박스가 포커스를 잃을 때 validateCommand 실행key: 콤보 박스가 수정될 경우 validateCommand 실행all: 콤보 박스의 모든 validate에 대해 validateCommand 실행
-
state 매개변수
normal: 드롭다운 목록 선택과 키보드 입력 모두 가능readonly: 드롭다운 목록 선택만 가능하며, 키보드로 직접 입력 불가disabled: 선택과 입력 모두 불가
댓글 남기기