鱼C论坛

 找回密码
 立即注册
查看: 25|回复: 1

Tkinter 想让第2个按钮颜色交替变换

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

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

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

x
本帖最后由 dragov 于 2026-8-7 19:32 编辑
  1. from tkinter import *
  2. root=Tk()
  3. o=["东","南","西","北"]
  4. p=["red","blue"]
  5. def gyl():
  6.       z=Toplevel(root)
  7.       y=list()
  8.       for i in range(len(o)):
  9.             x=Button(z,text=o[i])
  10.             x.pack()
  11.             y.append(x)
  12.       z.transient(root)
  13.       z.grab_set()
  14.       y[-1].focus_set()
  15.       r=True
  16.       def t():
  17.             global r
  18.             if r:
  19.                   y[1].config(background=p[0])
  20.                   r=False
  21.             else :
  22.                   y[1].config(background=p[1])
  23.                   r=True
  24.             y[1].after(2000,t)
  25.       root.after(5000,t)
  26. Button(root,text="大暴雨",command=gyl).pack()
  27. mainloop()
复制代码



为什么提示 r 没有被定义呢 ?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层
鱼油你好!你的代码有几个问题:

  • op 没有定义,导致 len(o) 报错。
  • y 是列表,不能直接调用 configfocus_set
  • r 变量作用域混乱,global r 引用了不存在的全局变量。
  • 你想让“第2个按钮”交替变色,但代码里没有明确创建第二个按钮。


下面是一个简单易懂的修正版,实现两个按钮,第二个按钮每2秒切换一次背景色:


  1. from tkinter import *

  2. root = Tk()

  3. # 第一个按钮
  4. Button(root, text="按钮1").pack()

  5. # 第二个按钮,准备交替变色
  6. btn2 = Button(root, text="按钮2", bg="lightblue")
  7. btn2.pack()

  8. # 控制颜色交替的状态
  9. flag = True

  10. def toggle_color():
  11.     global flag
  12.     if flag:
  13.         btn2.config(bg="orange")
  14.         flag = False
  15.     else:
  16.         btn2.config(bg="lightblue")
  17.         flag = True
  18.     # 每隔2000毫秒(2秒)再次调用自己
  19.     btn2.after(2000, toggle_color)

  20. # 启动交替
  21. btn2.after(2000, toggle_color)

  22. mainloop()
复制代码


这段代码中,btn2 就是第二个按钮,toggle_color 函数负责切换颜色,并通过 after 实现循环定时。你可以直接运行试试看!

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-7 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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