Как сделать чтобы при выборе значения в combobox tkinter в поле entry вставлялась связанная со значением информация
Подскажите как сделать так, чтобы при выборе значения в Combobox tkinter в виджет entry вставлялась соответствующая информация? Например есть combobox и entry. Combobox содержит: "1" и "2". Как сделать чтобы при выборе "1" в поле entry вставлялось значение "красный", а при выборе "синий" в entry вставлялось. Буду признателен за любую помощь.
Ответы (1 шт):
Простой способ — завести список значений, по индексу выбранного элемента (combobox.current()
) получать нужное значение.
Пример:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def on_change(_event):
index = combo.current()
if index < 0:
value = ""
else:
pair = items[index] # Тут будет пара (число, цвет)
value = pair[1]
output.delete(0, tk.END)
output.insert(0, value)
items = [
("1", "красный"),
("2", "синий"),
]
# Значения для вывода в комбобокс
values = [item[0] for item in items]
combo = ttk.Combobox(root, values=values)
combo.pack()
combo.bind("<<ComboboxSelected>>", on_change)
output = tk.Entry(root)
output.pack()
root.mainloop()
Более сложный (но удобный в использовании) вариант — создать свой класс для комбобокса, который будет уметь хранить целые объекты, а не просто строки, при выборе получать нужный объект, и из него получать нужное поле.
Пример см. в этом ответе:
Вывести атрибут экземпляра класса, в зависимости от выбора в Combobox