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

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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度