使用单个函数 tkinter 更改所有按钮颜色

问题描述 投票:0回答:1

所以我尝试定义一个函数来更改程序中可用的所有按钮的颜色,而无需单独配置每个按钮,如下所示:

def change_colors():
    #change button a, b and c colors

a = Button(text='1',command=change_color)
b = Button(text='2',command=change_color)
c = Button(text='3',command=change_color)

在这个例子中我可以这样做:

def change_colors():
    a.config(bg='red')
    b.config(bg='red')
    c.config(bg='red')

但在我的实际代码中有很多按钮,每个按钮都需要不同的颜色

python python-3.x tkinter
1个回答
0
投票

这是处理这个问题的一种方法,虽然有点罗嗦......

  • 像平常一样定义每个
    tk.Button
    小部件
  • 在定义按钮后使用
    config
    设置其
    command
    参数(因为您需要引用按钮本身,因此必须首先创建它们!)
  • 使用
    lambda
    将按钮对象和颜色传递给处理颜色更改的函数(lambda 用于将动态参数传递给函数)
import tkinter as tk

root = tk.Tk()


def change_btn_color(btn: tk.Button, color: str) -> None:
    btn.config(bg=color)


a = tk.Button(text='1')
a.config(command=lambda btn=a, color='red': change_btn_color(btn, color))
a.pack()

b = tk.Button(text='2')
b.config(command=lambda btn=b, color='green': change_btn_color(btn, color))
b.pack()

c = tk.Button(text='3')
c.config(command=lambda btn=c, color='blue': change_btn_color(btn, color))
c.pack()


root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.