How to change the color of ttk button How to change the color of ttk button tkinter tkinter

How to change the color of ttk button


Unfortunately, there isn't an easy way to change the foreground of a button from the ttk library. It is always the standard Windows gray like in your picture.

But you can easily get what you want with a normal tkinter.Button if you set the right options. Below is an example script:

import tkinter as tkroot = tk.Tk()btn = tk.Button(root,                 bg='#000000',                fg='#b7f731',                relief='flat',                text='hello button',                width=20)btn.pack()root.mainloop()

And here is what it will look like:

enter image description here

Also, the shade of green I picked was just an example one that I thought was pretty close to what you wanted. But you can specify any hex color code you want. If you need to turn a RGB value into hex, a simple trick is to use str.format like so:

>>> rgb = (183, 247, 49)>>> '#{:02x}{:02x}{:02x}'.format(*rgb)'#b7f731'>>>


Although it is not as simple as with Tk buttons, it is possible. In ttk, if you set the theme_use attribute to any of these: ('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative'), you should be able to modify the default behaviour. I set the "style.map" attribute to avoid background colour change due to mouse hover (The state of the button is always 'active').

import tkinter as tkfrom tkinter import ttk style = ttk.Style()style.theme_use('alt')style.configure('TButton', background = 'red', foreground = 'white', width = 20, borderwidth=1, focusthickness=3, focuscolor='none')style.map('TButton', background=[('active','red')])root = tk.Tk()button = ttk.Button(root,text='Quit')button.place(relx=0.3,rely=0.4)  root.mainloop()      

Hope this helps.


import ttkroot.style = ttk.Style()#root.style.theme_use("clam")style.configure('TButton', background='black')style.configure('TButton', foreground='green')button= ttk.Button(self, text="My background is black and my foreground is green.")

works for me if you want to change all your buttons to the one you "desire", with Python 2.7 and Tkinter 8.6