dragov 发表于 2023-8-18 14:55:38

Tkinter 定时刷新颜色


from tkinter import*
import time
root=Tk()
root.title("定时刷新颜色")
abc=["red","green","blue","indigo","yellow"]
def refresh():
      for i in abc :
            l=Label(root,text="COLOR",foreground=abc)
            root.after(1000,refresh)
            l.pack()
root.after(1000, refresh)
mainloop()

错误在哪里?

isdkz 发表于 2023-8-18 14:56:05

错误在于在刷新函数中,创建了多个Label,并且没有正确设置Label的前景色属性。下面是修正后的代码:

from tkinter import *
import time

root = Tk()
root.title("定时刷新颜色")
abc = ["red", "green", "blue", "indigo", "yellow"]
label = Label(root, text="COLOR")
label.pack()

def refresh(index=0):
    label.config(foreground=abc)
    index = (index + 1) % len(abc)
    root.after(1000, refresh, index)

root.after(1000, refresh)
mainloop()


修正后的代码中,我们只创建了一个Label,并在刷新函数中使用 label.config(foreground=abc) 来设置Label的前景色属性。通过使用 index 变量来迭代颜色列表,我们可以在每次刷新时更新Label的前景色。

学习编程中的Ben 发表于 2023-8-18 14:56:13

Tkinter 定时刷新颜色 Python交流

你提供的代码有几个问题。下面是修改后的代码:

from tkinter import *
import time

root = Tk()
root.title("定时刷新颜色")

abc = ["red", "green", "blue", "indigo", "yellow"]
color_index = 0

def refresh():
    global color_index
    l.config(foreground=abc)
    color_index = (color_index + 1) % len(abc)
    root.after(1000, refresh)

l = Label(root, text="COLOR")
l.pack()

root.after(1000, refresh)
root.mainloop()


主要修改的地方有:

1. 添加了 global color_index,以确保在 refresh 函数中能够正确访问和更新 color_index 变量。

2. 将 l=Label(root,text="COLOR",foreground=abc) 修改为 l.config(foreground=abc),这样可以动态改变标签的前景色。

3. 将 root.after(1000,refresh) 移出循环之外,放在末尾。这样在每次 refresh 函数执行完成后,都会再次调度一个新的刷新操作。

希望以上修改能够解决问题,使得标签的颜色能够按照指定的顺序定时刷新。如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: Tkinter 定时刷新颜色