Changing the Default Font for all the widgets in Tkinter

In Tkinter applications, you can set a default font that applies to all widgets using the option_add() method. This method allows you to specify global properties like font, background color, and other styling options that all widgets will inherit.

Syntax

window.option_add(pattern, value)

Parameters:

  • pattern ? The property pattern (e.g., "*Font", "*Background")
  • value ? The value to set for that property

Setting Default Font for All Widgets

Here's how to apply a default font to all widgets in your Tkinter application ?

# Import the required libraries
from tkinter import *

# Create an instance of Tkinter frame
win = Tk()
win.geometry("700x350")

# Add fonts for all the widgets
win.option_add("*Font", "Arial 12")

# Set the font for the Label widget specifically
win.option_add("*Label.Font", "Arial 18 bold")

# Define the background color for all the widgets
win.option_add("*Background", "bisque")

# Display bunch of widgets
Label(win, text="Label").pack(pady=5)
Button(win, text="Button").pack(pady=5)

# Create a Listbox widget
listbox = Listbox(win)
for i in range(5):
    listbox.insert(i, "item %d" % (i+1))
listbox.pack(pady=5)

# Create a Text widget
text_widget = Text(win, width=20, height=5)
text_widget.insert(1.0, "This is a text widget")
text_widget.pack(pady=5)

win.mainloop()

How It Works

The option_add() method uses pattern matching to apply styles:

  • "*Font" ? Sets default font for all widgets
  • "*Label.Font" ? Sets font specifically for Label widgets
  • "*Background" ? Sets background color for all widgets

Customizing Specific Widget Types

from tkinter import *

win = Tk()
win.geometry("600x400")

# Set different fonts for different widget types
win.option_add("*Button.Font", "Helvetica 14 bold")
win.option_add("*Label.Font", "Times 16 italic")
win.option_add("*Text.Font", "Courier 12")

# Create widgets to see the different fonts
Label(win, text="This is a Label").pack(pady=10)
Button(win, text="This is a Button").pack(pady=10)
Text(win, height=3, width=30).pack(pady=10)

win.mainloop()

Key Points

  • Use option_add("*Font", "fontname size") to set a global default font
  • Specific widget patterns like "*Button.Font" override global settings
  • Font specifications can include family, size, and style (bold, italic)
  • Changes apply to all widgets created after calling option_add()

Conclusion

The option_add() method provides an efficient way to set consistent styling across all widgets in your Tkinter application. Use global patterns for consistent theming and specific widget patterns for targeted customization.

Updated on: 2026-03-25T20:42:24+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements