상위 목록: 하위 목록: 작성 날짜: 읽는 데 2 분 소요

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 : 선택과 입력 모두 불가

댓글 남기기