Set style for Checkbutton or Labelframe in python tkinter Set style for Checkbutton or Labelframe in python tkinter tkinter tkinter

Set style for Checkbutton or Labelframe in python tkinter


You need to configure the Label sub-component:

from tkinter import *from tkinter import ttkroot = Tk()s = ttk.Style()s.configure('Red.TLabelframe.Label', font=('courier', 15, 'bold'))s.configure('Red.TLabelframe.Label', foreground ='red')s.configure('Red.TLabelframe.Label', background='blue')lf = ttk.LabelFrame(root, text = "Test", style = "Red.TLabelframe")lf.pack( anchor = "w", ipadx = 10, ipady = 5, padx = 10,                  pady = 0, side = "top")Frame(lf, width=100, height=100, bg='black').pack()print(s.lookup('Red.TLabelframe.Label', 'font'))root.mainloop()


As the accepted answer didn't really help me when I wanted to do a simple changing of weight of a ttk.LabelFrame font (if you do it like recommended, you end up with a misplaced label), I'll provide what worked for me.

You have to use labelwidget option argument of ttk.LabelFrame first preparing a seperate ttk.Label that you style earlier accordingly. Important: using labelwidget means you don't use the usual text option argument for your ttk.LabelFrame (just do it in the label).

# changing a labelframe font's weight to boldroot = Tk()style = ttk.Style()style.configure("Bold.TLabel", font=("TkDefaultFont", 9, "bold"))label = ttk.Label(text="Foo", style="Bold.TLabel")lf = ttk.LabelFrame(root, labelwidget=label)


For completeness sake, I was looking how to change border color style (specifically color) of ttk.LabelFrame and finally found how it worked so wanted to post on the posts that I came across while searching.

I create global styles for my ttk widgets, there are ways to apply this to single widgets as well.

style = ttk.Style()style.theme_create('style', parent='alt',                         settings = {'TLabelframe': {'configure':                                         {'background': 'black',                                        'relief': 'solid', # has to be 'solid' to color                                         'bordercolor': 'orange',                                        'borderwidth': 1}},                                    'TLabelframe.Label': {'configure':                                         {'foreground': 'green',                                        'background': 'black'}}})style.theme_use('style')