Как сделать чтобы при выборе значения в combobox tkinter в поле entry вставлялась связанная со значением информация

Подскажите как сделать так, чтобы при выборе значения в Combobox tkinter в виджет entry вставлялась соответствующая информация? Например есть combobox и entry. Combobox содержит: "1" и "2". Как сделать чтобы при выборе "1" в поле entry вставлялось значение "красный", а при выборе "синий" в entry вставлялось. Буду признателен за любую помощь.


Ответы (1 шт):

Автор решения: insolor

Простой способ — завести список значений, по индексу выбранного элемента (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

→ Ссылка