Skip to content Skip to sidebar Skip to footer

How Can I Change The Colour Of A Button When Clicked At Runtime?

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

Solution 1:

If you just wish to change the color of a button when clicked, you need to use the .config() method on that button widget.

for example, if a button is defined like

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

then to change the color (or pretty much everything related to that widget like text, command or whatever) call the method

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

OR .config() can be also be used (these 2 methods do exactly the same)

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

Now how will you know when a button is clicked or not. The simplest and intuitive way is to define functions and connect (or bind) them to buttons. Now how you wanna do that is totally up to the user's preferences. Some prefer to create separate different functions for all buttons, some only like to create one.

For your case though, as you don't need to do anything additional than changing colors then single function is enough. Important In the example code below, I have used lambda functions, a special type of functions, which don't need to be defined separately. That however, by no means, is necessary

Working example for you

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()

Using functions

from tkinter import *  # I don't recommend using global import. better use "import tkinter as tk"defchangeColor(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()

Post a Comment for "How Can I Change The Colour Of A Button When Clicked At Runtime?"