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?
There are two ways through which you can change the background color of window in Tkinter. They are: using configure(bg='') method of tkinter.Tk class. or. directly set the property bg of tkinter.Tk.
ttk module is used for styling the tkinter widgets such as setting the background color, foreground color, activating the buttons, adding images to labels, justifying the height and width of widgets, etc. In order to add a background color in tkinter widgets, we can specify the background property in the widget.
The attribute fg can be used to have the text in another colour and the attribute bg can be used to change the background colour of the label.
foreground − Foreground color for the widget. This can also be represented as fg. highlightbackground − Background color of the highlight region when the widget has focus. highlightcolor − Foreground color of the highlight region when the widget has focus.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With