본문 바로가기
python/tkinter

[Python tkinter GUI] #8 Combobox(콤보박스)

by ohojee 2022. 12. 16.

 

전체 소스코드
import tkinter.ttk as ttk
from tkinter import *

root = Tk()

root.title("GUI")
root.geometry("300x150")

#콤보상자 만들기(기재된 값 이외의 값으로도 수정 가능)
values = [str(i) + "일" for i in range(1, 32)]
combobox = ttk.Combobox(root, height=5, values=values)
combobox.pack()
combobox.set("카드 결제일") #최초 목록 제목 설정, 버튼 클릭으로 값 설정도 가능

#콤보상자 만들기(기재된 값 이외의 값으로 수정 불가능)
readonly_combobox = ttk.Combobox(root, height=10, values=values, state="readonly")
readonly_combobox.current(0) #0번째 인덱스 값 선택
readonly_combobox.pack()


def btncmd():
    print(combobox.get()) #선택된 값 표시
    print(readonly_combobox.get())
    
btn = Button(root, text="선택", command=btncmd)
btn.pack()

root.mainloop()
 
 

Combobox

콤보박스는 사이트를 가입할 때 흔히 볼 수 있다

생년월일을 기입할 때 아래화살표를 누르면 주르륵 뜨게 하는게 콤보박스이다

 

콤보박스 만들기
#콤보상자 만들기(기재된 값 이외의 값으로도 수정 가능)
values = [str(i) + "일" for i in range(1, 32)]
combobox = ttk.Combobox(root, height=5, values=values)
combobox.pack()
combobox.set("카드 결제일") #최초 목록 제목 설정, 버튼 클릭으로 값 설정도 가능
 

values=에 넣고싶은 값 리스트를 넣어주면 올바르게 작동된다

이때 콤보상자의 기본값은 콤보박스이름.set()으로 설정할 수 있다

한 항목을 설정한 후 선택 버튼을 누르면 알맞게 출력된다

#콤보상자 만들기(기재된 값 이외의 값으로 수정 불가능)
readonly_combobox = ttk.Combobox(root, height=10, values=values, state="readonly")
readonly_combobox.current(0) #0번째 인덱스 값 선택
readonly_combobox.pack()
 

위처럼 항목값 이외의 문자열로 최초 목록 제목을 설정할 수 있지만

목록의 값 중 하나로도 선택이 가능하다

콤보박스이름.current() 안에 인덱스를 넣어주면 된다

 

목록값 이외의 값만 선택하게 하고 싶을 경우에는

Combobox의 속성에 state="readonly"를 추가해주면 된다

그러면 위쪽의 콤보박스는 키보드로 텍스트를 추가한대로 출력되지만

아래의 콤보박스는 원래 있는 값만 선택 가능하다

 

 

댓글