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