All about

combobox(drop down) 의 값에 따라서 다음 combobox의 옵션 값을 동적으로 만들고자 합니다.

 

main category를 선택하면 sub category 값이 활성화됩니다.

import tkinter
import tkinter.ttk

main_category=[
    "Car",
    "Animal"
    ] 

car_list=[
    "BMW",
    "AUDI",
    "HYUNDAI",
]
animal_list=[
    "cat",
    "dog"
]


window = tkinter.Tk()
window.title("tkinter Test")
window.geometry()
window.resizable(0,0)


def get_category(eventObject): # eventObejct 자리에는 아무 값이나 들어가도 괜찮습니다.
    if category_combobox.get()=="Car":
        sub_combobox.config(value=car_list)
        sub_combobox.set("")
    elif category_combobox.get()=="Animal":
        sub_combobox.config(value=animal_list)
        sub_combobox.set("")


category_title=tkinter.Label(window, text="Main Category", font=("Arial", 10, "bold"))
category_title.grid(column=0, row=0, sticky='w') # grid return None always
category_combobox=tkinter.ttk.Combobox(window, height=len(main_category), value=main_category)
category_combobox.set("Select main Category") 
category_combobox.grid(column=0, row=1, sticky='w')
# 여기서 category_combobox에 <<ComboboxSelected>> 라는 event를 bind 합니다.
category_combobox.bind("<<ComboboxSelected>>", get_category) # event, triggerd function

sub_title=tkinter.Label(window, text="Sub category", font=("Arial", 10, "bold"))
sub_title.grid(column=0, row=2, sticky='w')
sub_combobox=tkinter.ttk.Combobox(window, value=[""])
sub_combobox.set("")
sub_combobox.grid(column=0, row=3, sticky='w')

window.mainloop()

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading