Как сделать переливающийся фон окна tkinter?

import tkinter

window = tkinter.Tk()
window.config(bg='#переливающийся цвет')
window.geometry('420x500')
window.title('Title')

window.mainLoop()

В приведённом коде выше вместо текста в "bg=" хотелось бы вставить переменную/имя функции, которая делает переливающийся цвет фона окна (если это возможно).


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

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

window.config(bg='#цвет') -> Параметр bg принимает формат RGB,
так что можно собрать кортеж из шестнадцатеричных кодов цвета
и через метод .after() ставить асинхронные задачи для главного цикла root.mainloop().

import tkinter as tk


def animate_background(root, colors, index=0):
    root.config(bg=colors[index])
    index = (index + 1) % len(colors)
    root.after(200, animate_background, root, colors, index)

root = tk.Tk()
root.geometry("400x300")

colors = ('#4faf0e', '#5aa114', '#65931a', '#708620', '#7b7826', 
    '#866b2d', '#915d33', '#9c5039', '#a7423f', '#b33546', '#d5e46a', 
    '#cddc74', '#c6d57f', '#bfce8a', '#b8c795', '#b0bf9f', '#a9b8aa', 
    '#a2b1b5', '#9baac0', '#94a3cb', '#bff010', '#b1ec1a', '#a3e925', 
    '#96e62f', '#88e33a', '#7bdf44', '#6ddc4f', '#60d959', '#52d664', 
    '#45d36f', '#dd3ed9', '#d13bdc', '#c539e0', '#b936e4', '#ad34e7', 
    '#a131eb', '#952fef', '#892cf2', '#7d2af6', '#7128fa', '#ab884e', 
    '#9e8947', '#918b41', '#858d3b', '#788f34', '#6b902e', '#5f9228', 
    '#529421', '#45961b', '#399815')
animate_background(root, colors)

root.mainloop()
→ Ссылка