You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现点击Tkinter按钮后永久改变其颜色

解决Tkinter按钮点击后永久变色的问题

你用activebackground属性没用是因为它只控制按钮被按住时的临时背景色,松开鼠标就会恢复原样。要实现点击后永久变色,需要给按钮绑定点击事件,在事件触发时直接修改按钮的background(缩写bg)属性。

修改后的完整代码

import tkinter as tk  # 补充你原代码遗漏的导入语句

def change_color(event):
    # 获取被点击的按钮,修改它的背景色为绿色
    event.widget.config(bg="green")

grd = tk.Tk()
grd.title("Bryn's Random Game of Randomness")
frame = tk.Frame(grd)
grd.rowconfigure(0, weight=1)
grd.columnconfigure(0, weight=1)
frame.grid(row=0, column=0, sticky="news")
grid = tk.Frame(frame)
grid.grid(sticky="news", column=0, row=7, columnspan=2)
frame.rowconfigure(7, weight=1)
frame.columnconfigure(0, weight=1)

for x in range(15):
    for y in range(5):
        btn = tk.Button(frame)
        # 绑定鼠标左键点击事件到颜色修改函数
        btn.bind("<Button-1>", change_color)
        btn.grid(column=x, row=y, sticky="news")

frame.columnconfigure(tuple(range(15)), weight=1)
frame.rowconfigure(tuple(range(5)), weight=1)

grd.mainloop()

关键说明

  • 新增change_color函数:通过event.widget获取触发点击事件的按钮,调用config(bg="green")永久修改其背景色。
  • 给每个按钮绑定<Button-1>事件(鼠标左键点击),触发颜色修改逻辑。
  • 移除了无效的activebackground属性,替换为实际修改永久背景色的逻辑。

扩展:实现点击切换颜色

如果需要点击一次变绿、再点击恢复默认样式,可以修改change_color函数:

def change_color(event):
    btn = event.widget
    # 判断当前背景色,切换状态
    if btn.cget("bg") == "green":
        btn.config(bg=tk.Button().cget("bg"))  # 恢复按钮默认背景色
    else:
        btn.config(bg="green")

内容的提问来源于stack exchange,提问作者RougeDemon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:18:15