鱼C论坛

 找回密码
 立即注册
查看: 91|回复: 9

[已解决]Tkinter 按钮底色 红-绿 交替闪烁,怎么实现 ?

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. from tkinter import *
  2. root=Tk()
  3. root.geometry("234x123")
  4. root.option_add("*width","18")
  5. root.option_add("*height","3")
  6. b=Button(root,text="大暴雨",background="red")
  7. b.pack(expand=True)
  8. def a():
  9.       b.config(background="green")
  10. root.after(3000,a)
  11. mainloop()
复制代码


每隔3s ,红-绿-红-绿-红.......
最佳答案
7 天前
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()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
您好!要实现 Tkinter 按钮背景颜色在红色和绿色之间交替闪烁,每隔 3 秒切换一次,您需要修改代码,使用一个函数来切换颜色并递归调用自身。以下是修改后的代码:


  1. from tkinter import *

  2. root = Tk()
  3. root.geometry("234x123")
  4. root.option_add("*width", "18")
  5. root.option_add("*height", "3")
  6. b = Button(root, text="大暴雨", background="red")
  7. b.pack(expand=True)

  8. def toggle_color():
  9.     current_color = b.cget("background")
  10.     if current_color == "red":
  11.         new_color = "green"
  12.     else:
  13.         new_color = "red"
  14.     b.config(background=new_color)
  15.     root.after(3000, toggle_color)  # 每隔3秒再次调用

  16. root.after(3000, toggle_color)  # 3秒后开始第一次切换

  17. mainloop()
复制代码


关键点:
- 使用 b.cget("background") 获取当前背景颜色。
- 根据当前颜色决定下一个颜色(红变绿,绿变红)。
- 使用 root.after(3000, toggle_color) 来每隔 3 秒调用函数,实现循环闪烁。

这样,按钮会从初始红色开始,每隔 3 秒在红色和绿色之间交替切换。如果您需要调整闪烁间隔,可以修改 after 方法中的时间参数(单位是毫秒)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
  1. from tkinter import *
  2. root=Tk()
  3. root.geometry("234x123")
  4. root.option_add("*width","18")
  5. root.option_add("*height","3")
  6. b=Button(root,text="大暴雨",background="red")
  7. b.pack(expand=True)
  8. bg=["green", "red"]
  9. n=0
  10. def a():
  11.       b.config(background=bg[n])
  12.       n= not n
  13. root.after(3000,a)
  14. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
另一种思路,ai 的也行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层    本楼为最佳答案   
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()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层


报错呀!UnboundLocalError: cannot access local variable 'n' where it is not associated with a value
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 dragov 于 2025-8-23 19:47 编辑
ydwb 发表于 2025-8-23 13:44
from tkinter import *
root=Tk()
root.geometry("234x123")



嗯,这个程序还不错的 !
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 7 天前 | 显示全部楼层


您给的这个程序需要进行修改,我是这样修改的,然后就行了.

  1. from tkinter import *
  2. root=Tk()
  3. root.geometry("234x123")
  4. root.option_add("*width","18")
  5. root.option_add("*height","3")
  6. b=Button(root,text="大暴雨",background="red")
  7. b.pack(expand=True)
  8. bg=["green", "red"]
  9. n=0
  10. def a():
  11.       global n
  12.       b.config(background=bg[n])
  13.       n= not n
  14. root.after(3000,a)
  15. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
dragov 发表于 2025-8-23 19:50
您给的这个程序需要进行修改,我是这样修改的,然后就行了.

哈哈哈,忘了global
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
dragov 发表于 2025-8-23 19:50
您给的这个程序需要进行修改,我是这样修改的,然后就行了.

我直接脑测的,抱歉了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-30 11:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表