鱼C论坛

 找回密码
 立即注册
查看: 30|回复: 3

让最后一个按钮的底色交替变换?

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

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

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

x
  1. from tkinter import *
  2. import random
  3. root=Tk()
  4. root.geometry("444x555")
  5. a=f"#{random.randint(0x456ABC,0xABC456):06x}"
  6. root.config(background=a)
  7. p=[{"name":"A","hue":"hotpink"},
  8.    {"name":"B","hue":"mediumorchid"},
  9.    {"name":"C","hue":"lightcoral"},
  10.    {"name":"D","hue":"chocolate"},
  11.    {"name":"E","hue":"crimson"}]
  12. r=True
  13. def n():
  14.         global r,m
  15.         if r :
  16.                 m[4].config(background="#A0B0C0")
  17.                 f=False
  18.         else :
  19.                 m[4].config(background="#0A0B0C")
  20.                 f=True
  21.         m[4].after(2026,n)

  22. m=list()
  23. for i in range(len(p)) :
  24.         q=Button(root,text=p[i]["name"],foreground=p[i]["hue"],pady=23,width=23)
  25.         q.pack(expand=True)
  26.         m.append(q)
  27. m[4].config(command=n)
  28. mainloop()
复制代码


按钮【E】的底色,如何动起来?

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
鱼油您好!您的代码有几个需要注意的地方:

- 变量 p 没有定义,导致循环无法运行。  
- m 是列表,不能直接调用 .config() 方法。  
- 函数 n()f 未声明全局,且 r 始终为 True,颜色无法交替。  

要让最后一个按钮的底色交替变换,可以参考下面的代码:


  1. from tkinter import *

  2. root = Tk()
  3. root.geometry("444x555")
  4. root.config(background="#AABBCC")  # 简化背景颜色示例

  5. buttons_text = ["A", "B", "C", "D", "E"]
  6. buttons = []

  7. for text in buttons_text:
  8.     btn = Button(root, text=text, pady=23, width=23)
  9.     btn.pack(expand=True)
  10.     buttons.append(btn)

  11. last_btn = buttons[-1]  # 最后一个按钮
  12. use_color1 = True

  13. def toggle():
  14.     global use_color1
  15.     if use_color1:
  16.         last_btn.config(background="#A0B0C0")
  17.     else:
  18.         last_btn.config(background="#0A0B0C")
  19.     use_color1 = not use_color1
  20.     root.after(2026, toggle)

  21. root.after(2026, toggle)  # 启动定时器
  22. root.mainloop()
复制代码


解释一下:

1. 先创建五个按钮,用列表 buttons 保存。  
2. 取出最后一个按钮 last_btn = buttons[-1]。  
3. 定义 toggle() 函数,利用 use_color1 布尔变量切换两种颜色。  
4. 使用 root.after(2026, toggle) 让程序每 2.026 秒自动调用一次切换函数,实现颜色交替。  

这样就实现了按钮【E】的底色动起来的效果。

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

使用道具 举报

 楼主| 发表于 2 小时前 | 显示全部楼层
FishC 发表于 2026-5-28 09:31
鱼油您好!您的代码有几个需要注意的地方:

- 变量 p 没有定义,导致循环无法运行。  

要是使第一个按钮自动变换颜色呢 ?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
dragov 发表于 2026-05-28 09:51
FishC 发表于 2026-5-28 09:31
鱼油您好!您的代码有 ...


如果要让第一个按钮自动变换颜色,只需把代码中的 last_btn = buttons 改为 first_btn = buttons[0] 即可。  

修改后的关键部分:  

  1.   
  2. first_btn = buttons[0]  

  3. def toggle():  
  4.     global use_color1  
  5.     if use_color1:  
  6.         first_btn.config(background="#A0B0C0")  
  7.     else:  
  8.         first_btn.config(background="#0A0B0C")  
  9.     use_color1 = not use_color1  
  10.     root.after(2026, toggle)  
复制代码


这样,按钮【A】的底色就会每 2.026 秒自动交替变换了。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-28 12:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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