python标签怎样按要求不停变换颜色?

想要tkinter里的标签不停变换列表中的颜色,这是错误代码:

import tkinter as tk
import time

def colored():
  for i in reds:
    label1.config(text=i,fg=i)
    time.sleep(1)
  tk_main.after(1000,colored)

reds=['IndianRed',
        'LightCoral',
        'Salmon',
        'DarkSalmon',
        'LightSalmon',
        'Crimson',
        'Red',
        'FireBrick',
        'Pink',
        'LightPink',
        'HotPink',
        'DeepPink',
        'PaleVioletRed']
tk_main = tk.Tk()
tk_main.geometry('400x300')
label1=tk.Label(tk_main,text = '颜色测试',font = ('宋体',35,'bold'))
label1.pack(expand = 1)
colored()
tk_main.mainloop()

结果不尽人意,卡的窗口都不会出现了。

已经有定时器了,就不要使用time.sleep了,这样单线程的话整个程序都会暂停。
使用累加变量 i 即可解决。

i = 0
def colored():
  global i
  label1.config(text=reds[i],fg=reds[i])
  i = (i+1) % len(reds)
  tk_main.after(1000,colored)

如果不想定义全局变量的话,传个参数进去也可以,作为循环开始的位置。

def colored(i):
  label1.config(text=reds[i],fg=reds[i])
  i = (i+1) % len(reds)
  tk_main.after(1000,lambda :colored(i))
 
colored(0)

def colored():
    for i in reds:
        label1.config(text=i, fg=i)
        tk_main.update()
        time.sleep(1)
    tk_main.after(1000, colored)