按 钮 底 色 自 动 变 换 3 次 颜 色 ?
from tkinter import *import random
root=Tk()
b=Button(root,text="天上的星星")
b.pack()
def mtx():
for _ in range(3):
b.config(background=f"#{random.randint(0,0x459041):06x}")
mtx()
mainloop()
如何实现按钮底色自动变换3次颜色? 你的代码中 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 小助理,如未能正确解答您的问题,请继续追问。 from tkinter import *
root=Tk()
m=PhotoImage(file="e://A.png")
n=PhotoImage(file="e://B.png")
b=Button(root,
relief="ridge",
borderwidth=11)
b.pack()
def a():
if b.cget("image") == m :
b.config(image=n)
else :
b.config(image=m)
b.after(3000,a)
times=3
while times != 0:
a()
sleep(2000)
times -= 1
mainloop()同你的另一个问题 学习编程中的Ben 发表于 2026-5-4 21:03
同你的另一个问题
运行,报错的! dragov 发表于 2026-5-6 17:01
运行,报错的!
你再稍微调一下吧,反正我的思路是对的
太久没做python项目
我本地都没配置运行环境汗颜了
页:
[1]