MmiaoLikeornor 2022-07-24 21:51 采纳率: 83.3%
浏览 30
已结题

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()

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

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-07-25 01:37
    关注

    已经有定时器了,就不要使用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)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月24日

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化