Как получить выбранное пользователем значение в Combobox Tkinter?
Я хочу работать дальше с тем значением, которое указал пользователь. Например, есть словарь, где ключи - это то, что выбирает пользователь в combo1
:
dct = {'Морковь': ['M1', 'M2', 'M3', 'M4'], 'Лук': ['Л2', 'Л4', 'Л5'], 'Картофель': ['К1', 'К2', 'К7']}
def selected(event):
# получаем выделенный элемент
global selection
selection = combo.get()
root = Tk()
root.geometry('600x300')
combo1 = Combobox(root)
combo1['values'] = tuple(dct.keys())
combo1.grid(column=0, row=0)
combo1.bind("<<ComboboxSelected>>", selected)
Я хочу создать второй виджет combo2
, где пользователь будет выбирать по ключу нужный мне список. Т.е. пользователь выбирает, например, "Лук" и дальше открывается окно с выбором элементов: 'Л2', 'Л4', 'Л5'. Но я не понимаю как сделать это динамическое изменение для второго виджета.
Мой код выглядит так:
from tkinter import *
from tkinter.ttk import Combobox
def selected(event):
# получаем выделенный элемент
global selection1
selection1 = dct[str(combo1.get())]
def selected2(event):
# получаем выделенный элемент
global selection2
selection2 = combo2.get()
root = Tk()
root.geometry('600x300')
dct = {'Морковь': ['M1', 'M2', 'M3', 'M4'], 'Лук': ['Л2', 'Л4', 'Л5'], 'Картофель': ['К1', 'К2', 'К7']}
selection1 = None
selection2 = None
combo1 = Combobox(root)
combo1['values'] = tuple(dct.keys())
combo1.grid(column=0, row=0)
combo1.bind("<<ComboboxSelected>>", selected)
combo2 = Combobox(root)
combo2['values'] = selection1
combo2.grid(column=0, row=1)
combo2.bind("<<ComboboxSelected>>", selected2)
mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
В обработчике выбора первого комбобокса добавьте простановку values второго комбобокса:
def selected(event):
...
combo2['values'] = dct[combo1.get()]