在运行时单击时如何更改按钮的颜色?

时间:2020-10-05 10:44:45

标签: python button tkinter colors

button1=Button(root,text="A1",width=8).grid(row=0,column=0)
button2=Button(root,text="A2",width=8).grid(row=0,column=1)

label1=Label(root,text="       ",padx=20).grid(row=0,column=2)

button22=Button(root,text="A3",width=8).grid(row=0,column=3,sticky='E')
button23=Button(root,text="A4",width=8).grid(row=0,column=4,sticky='E')

我正在尝试为学校项目制作座位安排系统。我有一个问题:单击按钮后如何更改按钮的颜色?单击该按钮后,我想更改已预订和可用座位的颜色。

1 个答案:

答案 0 :(得分:1)

如果只希望在单击时更改按钮的颜色,则需要在该按钮小部件上使用.config()方法。

例如,如果定义的按钮类似

aButton = tk.Button(root, text='change my color').pack()

然后更改颜色(或与该小部件相关的几乎所有内容,如文本,命令或其他),调用该方法

aButton.configure(bg='#f0f', fg='#fff') # change to your required colors, bg is background, fg is foreground.

也可以使用OR .config()(这两种方法的作用完全相同)

aButton.config(bg='#f0f', fg='#fff')

现在您将如何知道按钮何时为clicked。最简单直观的方法是定义functions并将其连接(或bind)到按钮。现在,您要如何操作完全取决于用户的偏好。有些人喜欢为所有按钮创建单独的不同功能,有些人只喜欢创建一个。

但是对于您的情况,因为除了更改颜色之外您不需要执行任何其他操作,因此单个功能就足够了。 重要:在下面的示例代码中,我使用了lambda函数,这是一种特殊类型的函数,不需要单独定义。但是,那绝不是必需的

适合您的工作示例

from tkinter import *  # I don't recommend using global import. better use "import tkinter as tk"

root = Tk()

button1=Button(root,text="A1",width=8, command=lambda: button1.config(bg='#f00'))
button1.grid(row=0,column=0)

button2=Button(root,text="A2",width=8, command=lambda: button2.config(bg='#f00'))
button2.grid(row=0,column=1)

Label(root,text=" ",padx=20).grid(row=0,column=2)

button22=Button(root,text="A3",width=8, command=lambda: button22.config(bg='#f00'))
button22.grid(row=0,column=3,sticky='E')

button23=Button(root,text="A4",width=8, command=lambda: button23.config(bg='#f00'))
button23.grid(row=0,column=4,sticky='E')

root.mainloop()

使用功能

from tkinter import *  # I don't recommend using global import. better use "import tkinter as tk"


def changeColor(btn):
    # Use your own highlight background argument here instead of bg
    btn.configure(bg='#f00')


root = Tk()

button1=Button(root,text="A1",width=8, command=lambda: changeColor(button1))
button1.grid(row=0,column=0)

button2=Button(root,text="A2",width=8, command=lambda: changeColor(button2))
button2.grid(row=0,column=1)

Label(root,text=" ",padx=20).grid(row=0,column=2)

button22=Button(root,text="A3",width=8, command=lambda: changeColor(button22))
button22.grid(row=0,column=3,sticky='E')

button23=Button(root,text="A4",width=8, command=lambda: changeColor(button23))
button23.grid(row=0,column=4,sticky='E')

root.mainloop()