Tkinter 按钮底色 红-绿 交替闪烁,怎么实现 ?
from tkinter import *
root=Tk()
root.geometry("234x123")
root.option_add("*width","18")
root.option_add("*height","3")
b=Button(root,text="大暴雨",background="red")
b.pack(expand=True)
def a():
b.config(background="green")
root.after(3000,a)
mainloop()
每隔3s ,红-绿-红-绿-红....... 您好!要实现 Tkinter 按钮背景颜色在红色和绿色之间交替闪烁,每隔 3 秒切换一次,您需要修改代码,使用一个函数来切换颜色并递归调用自身。以下是修改后的代码:
from tkinter import *
root = Tk()
root.geometry("234x123")
root.option_add("*width", "18")
root.option_add("*height", "3")
b = Button(root, text="大暴雨", background="red")
b.pack(expand=True)
def toggle_color():
current_color = b.cget("background")
if current_color == "red":
new_color = "green"
else:
new_color = "red"
b.config(background=new_color)
root.after(3000, toggle_color)# 每隔3秒再次调用
root.after(3000, toggle_color)# 3秒后开始第一次切换
mainloop()
关键点:
- 使用 b.cget("background") 获取当前背景颜色。
- 根据当前颜色决定下一个颜色(红变绿,绿变红)。
- 使用 root.after(3000, toggle_color) 来每隔 3 秒调用函数,实现循环闪烁。
这样,按钮会从初始红色开始,每隔 3 秒在红色和绿色之间交替切换。如果您需要调整闪烁间隔,可以修改 after 方法中的时间参数(单位是毫秒)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 from tkinter import *
root=Tk()
root.geometry("234x123")
root.option_add("*width","18")
root.option_add("*height","3")
b=Button(root,text="大暴雨",background="red")
b.pack(expand=True)
bg=["green", "red"]
n=0
def a():
b.config(background=bg)
n= not n
root.after(3000,a)
mainloop() 另一种思路,ai 的也行 from tkinter import *
root=Tk()
root.geometry("234x123")
root.option_add("*width","18")
root.option_add("*height","3")
b=Button(root,text="大暴雨",background="red")
b.pack(expand=True)
is_red = True
def a():
global is_red
if is_red:
b.config(bg="green")
is_red = False
else:
b.config(bg="red")
is_red = True
root.after(3000, a)
a()
mainloop() 某一个“天” 发表于 2025-8-23 10:54
报错呀!UnboundLocalError: cannot access local variable 'n' where it is not associated with a value 本帖最后由 dragov 于 2025-8-23 19:47 编辑
ydwb 发表于 2025-8-23 13:44
from tkinter import *
root=Tk()
root.geometry("234x123")
嗯,这个程序还不错的 !
某一个“天” 发表于 2025-8-23 10:54
您给的这个程序需要进行修改,我是这样修改的,然后就行了.
from tkinter import *
root=Tk()
root.geometry("234x123")
root.option_add("*width","18")
root.option_add("*height","3")
b=Button(root,text="大暴雨",background="red")
b.pack(expand=True)
bg=["green", "red"]
n=0
def a():
global n
b.config(background=bg)
n= not n
root.after(3000,a)
mainloop() dragov 发表于 2025-8-23 19:50
您给的这个程序需要进行修改,我是这样修改的,然后就行了.
哈哈哈,忘了global dragov 发表于 2025-8-23 19:50
您给的这个程序需要进行修改,我是这样修改的,然后就行了.
我直接脑测的,抱歉了
页:
[1]