Light or Dark Theme Changer using Tkinter


A GUI (Graphical User Interface) that fluidly alternates between bright and dark themes may be something you're interested in programming. Tkinter is your go-to library for creating such apps if you're using Python. This tutorial will show you how to use Tkinter to make a light or dark theme changer.

What is Tkinter?

Python's default GUI package is Tkinter. It is a preferred method for developing desktop apps. One of Tkinter's numerous advantages is its simplicity and adaptability, which let you design widgets and interfaces with changeable properties like buttons, labels, text boxes, menus, and more.

Importance of Theme Changing Feature

By enabling users to alter the appearance of the application to their liking, a theme-changing function improves their experience. For instance, individuals who spend a lot of time on computers can find a dark theme to be more soothing to the eyes. The ability to alternate between light and dark themes is thus a crucial feature of any contemporary software programme.

Let's now go into the details of writing a Python Tkinter theme switcher.

Setting Up

Make sure Python is set up on your computer. Python already includes Tkinter, so no additional installation is required.

Crafting a Light or Dark Theme Changer

Importing Necessary Libraries

The initial step is importing the required libraries −

from tkinter import Tk, Button

Creating a Basic Tkinter Window

Next, let's build a simple Tkinter window:

root = Tk()
root.geometry("300x300")
root.title("Theme Changer")
root.mainloop()

Adding the Theme Changer Function

We'll now develop a theme-changing function:

def change_theme():
   current_bg = root.cget("bg")
   new_bg = "white" if current_bg == "black" else "black"
   root.configure(bg=new_bg)

The cget() method is used in this procedure to retrieve the current backdrop colour. We switch to white if it's black; if it's not black, we switch to black.

Adding a Button

Let's finish by including a button that, when clicked, will invoke the change_theme() function −

change_theme_button = Button(root, text="Change Theme", command=change_theme)
change_theme_button.pack()

This is how the complete programme will appear −

from tkinter import Tk, Button

def change_theme():
   current_bg = root.cget("bg")
   new_bg = "white" if current_bg == "black" else "black"
   root.configure(bg=new_bg)

root = Tk()
root.geometry("300x300")
root.title("Theme Changer")
change_theme_button = Button(root, text="Change Theme", command=change_theme)
change_theme_button.pack()
root.mainloop()

This is a straightforward application. This may be expanded to allow you to modify the colours of every widget, not just the backdrop.

Advanced Theme Changer

You may make various colour schemes and flip between them for a more sophisticated theme switcher. For illustration:

from tkinter import Tk, Button, Label

def change_theme():
   current_bg = root.cget("bg")
   new_theme = "light" if current_theme == "dark" else "dark"
   theme_colors = themes[new_theme]
   root.configure(bg=theme_colors["bg"])
   change_theme_button.configure(bg=theme_colors["button"], fg=theme_colors["text"])
   info_label.configure(bg=theme_colors["bg"], fg=theme_colors["text"])
   global current_theme
   current_theme = new_theme

themes = {
   "light": {"bg": "white", "button": "lightgrey", "text": "black"},
   "dark": {"bg": "black", "button": "grey", "text": "white"}
}

current_theme = "light"

root = Tk()
root.geometry("300x300")
root.title("Advanced Theme Changer")

info_label = Label(root, text="Click the button to change the theme")
info_label.pack(pady=10)

change_theme_button = Button(root, text="Change Theme", command=change_theme)
change_theme_button.pack()

root.mainloop()

Two themes, "light" and "dark," each with a different background, button, and text colour, are defined in the code above. Then, we developed the info_label and change_theme_button to provide the user with information and to choose between themes, respectively. The change_theme function modifies all component colours in accordance with the selected theme.

Conclusion

Modern applications must have the ability to change themes since it improves user experience by addressing personal preferences and comfort. You may effectively integrate this feature in your desktop programmes by using Python's Tkinter module. Both basic and sophisticated theme changers can be made, as was shown, and with more research and modification, your programme can be as user-friendly as feasible.

Updated on: 18-Jul-2023

934 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements