Tkinter relief buttons when clicked python

button, python, tkinter

Solution

You can tie a mouse-click to a function that enforces the relief of the button to keep it flat, otherwise the mouse-click will use its default action on click: making the button sunken.

def keep_flat(event):       # on click,
    if event.widget is btn: # if the click came from the button
        event.widget.config(relief=FLAT) # enforce an option

def callback():
    print('button clicked')

root = Tk()

btn = Button(root, text='click', relief=FLAT, command=callback)
btn.pack()

root.bind('<Button-1>', keep_flat) # bind the application to left mouse click

mainloop()

Another option is to bind the button-click to the string "break", which prevents any typical event handlers from kicking off (including the button's `command` option):

btn.bind('<Button-1>', lambda e: 'break')

http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

Problem

So, in Tkinter Buttons seem to have a relief property. This is defaulted to raised, and when the button is pressed it changes to sunken. I made my use relief=FLAT, but when I click this button it still is sunken. Is there a way to make it so that there is a different relief when clicked? Would it involve changing the border color? ``` Button(text=day, width=2, relief=FLAT, activebackground = self.color_clicked, background = self.today_color) ``` This looks flat, but when I click on it it changes to sunken (obviously it changes back to flat when I let go, however).

Original source