Reputation: 503
I have a simple tkinter window. It consists of a small window, a timer, and a button to set timer. I don't want to go in details with the code.
I want to change the background of all the widgets in my window(buttons, label, Etc.).
My first thought is to use a global variable which I will set to "red"
for example, and associate all the widgets background
option with the global variable. Then, on button press I will change the global variable to "green"
(so that the background of all widgets change) but nothing happens.
My understanding was the .mainloop()
sort of updated the window. How can I have the widgets to change background color when my variable change without restarting my application?
Upvotes: 9
Views: 26147
Reputation: 385900
The background colors will not automatically change. Tkinter has the ability to do such a thing with fonts but not with colors.
You will have to write some code to iterate over all of the widgets and change their background colors.
Upvotes: 3
Reputation: 924
from my first impression I think this should be what you're looking for, as a simple example
from Tkinter import *
root = Tk()
global colour
global colourselection
global count
colour = ""
colourselection= ['red', 'blue']
count = 1
def start(parent):
Tk.after(parent, 1000, change)
def change():
global colour
global colourselection
global count
if (count < 2 ):
colour = colourselection[count]
button.configure(bg = colour)
count + 1
else:
colour = colourselection[count]
button.configure(bg = colour)
count = 1
start(root)
button = Button(text = 'start', command = lambda: start(root))
button.pack()
root.mainloop()
I'm sure you can work out any issues, it's not been tested
Upvotes: 8