|
|
发表于 2026-5-4 09:17:04
|
显示全部楼层
你的代码中 mtx() 函数在循环里瞬间执行了三次,由于程序执行速度极快,按钮颜色会直接跳到最后一次的结果,你看不到中间的变化过程。要实现“自动变换三次颜色(每次有延迟)”,需要使用 tkinter 的 after 方法定时改变颜色。
下面是一个修改后的例子,窗口显示后按钮背景色会每隔 500 毫秒自动变换一次,共变换 3 次:
- from tkinter import *
- import random
- root = Tk()
- b = Button(root, text="天上的星星")
- b.pack()
- count = 0 # 记录已变换的次数
- def change_color():
- global count
- if count < 3:
- # 生成随机颜色(保留你原来的范围)
- color = f"#{random.randint(0, 0x459041):06x}"
- b.config(background=color)
- count += 1
- # 500毫秒后再次调用本函数
- root.after(500, change_color)
- # 窗口显示后稍等100ms启动变色
- root.after(100, change_color)
- root.mainloop()
复制代码
**解释:**
- root.after(延迟毫秒, 函数名) 会在指定时间后自动调用函数,且不阻塞界面。
- 每次调用 change_color 时,判断是否已变换了 3 次,若未达到则设置新颜色并计数,然后安排下一次调用。
- 这样按钮颜色就会按次序变化,你就能看到每次的闪烁效果。
注意:不要使用 time.sleep(),否则界面会卡死。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|