combobox(drop down) 의 값에 따라서 다음 combobox의 옵션 값을 동적으로 만들고자 합니다.
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()