How to change the colour of everything in a tkinter GUI at once How to change the colour of everything in a tkinter GUI at once tkinter tkinter

How to change the colour of everything in a tkinter GUI at once


You can make a list containing all your widgets you want to change

myWidgets = [button1, label1, ... ] # List of widgets to change colourfor wid in myWidgets:    wid.configure(bg = newColour)

Here's an example code of changing the background colour of multiple labels at once.

import tkinter as tk# Change all label backgroundsdef change_colour():    c = user.get() #Get the entered text of the Entry widget    for wid in widget_list:        wid.configure(bg = c)# Create GUIroot = tk.Tk()tk.Label(root, text='Enter a colour').pack()user = tk.Entry(root)user.pack()label_frame = tk.Frame(root)label_frame.pack()btn = tk.Button(root, text='Change Colour', command = change_colour)btn.pack()widget_list = [user, btn] # Add defined widgets to list#Dynamicly create labels for examplefor x in range(10):     lbl = tk.Label(label_frame, text='Label '+str(x))    lbl.pack(side = tk.LEFT)    widget_list.append(lbl) #Add widget object to listroot.mainloop()

Or if you have a Frame already containing all the widgets you want to change, then you can use this instead.

parent_widget.winfo_children() will return a list containing all the widgets stored inside the parent widget

def change_colour():    c = user.get()    for wid in label_frame.winfo_children():        wid.configure(bg = c)


Try using ttk for some of your GUI elements. ttk allows you to create styles for widgets and update the style to all widgets at once (at least for those that have the same style). You may need to mix the usage of ttk and tkinter, but it should make things a bit easier in the long run. Here is an example I made:

import tkinter as tkfrom tkinter import ttkroot = tk.Tk()# Creating a style for the buttonscolor_style_button = ttk.Style()color_style_button.configure("color.TButton", foreground="red")def change_color(color):    # This function changes the style to all buttons using the "color.Button style"    if color == "red":        color_style_button.configure("color.TButton", foreground="red")    elif color == "blue":        color_style_button.configure("color.TButton", foreground="blue")    elif color == "green":        color_style_button.configure("color.TButton", foreground="green")frame_a = ttk.Frame(root)frame_a.pack()red_button = ttk.Button(frame_a, text="Red", command=lambda: change_color("red"), style="color.TButton")red_button.pack()blue_button = ttk.Button(frame_a, text="Blue", command=lambda: change_color("blue"), style="color.TButton")blue_button.pack()green_button = ttk.Button(frame_a, text="Blue", command=lambda: change_color("green"), style="color.TButton")green_button.pack()root.mainloop()

I recommend checking out this site to learn more about ttk and styles.