from tkinter import *
# 1. Функция, которая будет обновлять текст в метках
def update_palette(name, code):
label_name.config(text=name)
label_code.config(text=code)
root = Tk()
root.title("Палитра")
# --- ВЕРХНЯЯ ЧАСТЬ (Текстовые метки) ---
f_text = Frame(root)
f_text.pack(pady=10)
# Метка для названия цвета
label_name = Label(f_text, text="Выберите цвет", bg="black", fg="white", width=15)
label_name.pack(side=LEFT, padx=5)
# Метка для кода цвета
label_code = Label(f_text, text="#??????", relief=SUNKEN, width=15)
label_code.pack(side=LEFT, padx=5)
# --- НИЖНЯЯ ЧАСТЬ (Кнопки) ---
f_colors = LabelFrame(root, text="Цвета радуги")
f_colors.pack(padx=10, pady=10)
# Список кортежей: (Название цвета, HEX-код)
rainbow = [
("Красный", "#ff0000"),
("Оранжевый", "#ff7f00"),
("Жёлтый", "#ffff00"),
("Зелёный", "#00ff00"),
("Голубой", "#00ffff"),
("Синий", "#0000ff"),
("Фиолетовый", "#8b00ff")
]
# 2. Создаем кнопки в цикле и привязываем действие
for name, code in rainbow:
# Важный момент: используем lambda n=name, c=code,
# чтобы программа запомнила значения именно для этой кнопки
btn = Button(
f_colors,
bg=code,
width=4,
height=2,
command=lambda n=name, c=code: update_palette(n, c)
)
btn.pack(side=LEFT, padx=5, pady=5)
root.mainloop()