I am trying to update the of the background color of a text label. For this I am using the ttk module of tkinter.
For some reason it doesn't want to execute the config.xx(style="xx.TLabel
.
from tkinter import *
from tkinter import ttk
win = Tk()
win.geometry("1200x800") #1024*600
s = ttk.Style(win)
s.configure("CustomGrey.TLabel", background="#4D4D4D", foreground="white")
s.configure("CustomGreen.TLabel", background="#97D077", foreground="white")
s.configure("CustomYellow.TLabel", background="#FFD966", foreground="white")
s.configure("CustomRed.TLabel", background="#FF6666", foreground="white")
s.configure("CustomRed.TLabel", background="#FF6666", foreground="white", font=('Time New Roman', 60), anchor= "c")
def updateLabelColor(color):
if color == "Green": battery_lab.config(style="CustomGreen.TLabel")
elif color == "Yellow": battery_lab.config(style="CustomYellow.TLabel")
elif color == "Red": battery_lab.config(style="CustomRed.TLabel")
updateLabelColor("Green")
The goal is that text can change color in a program. It does not matter if it is done via a tk or a ttk label.
Does anyone know what to do with this?
CodePudding user response:
I'm not sure what you asked for. If you want to change a tkinter.Label's background color you can easily change it by adding 'background' attribute:
from tkinter import *
root = Tk()
label = Label(root, text="A Text", background="yellow")
label.pack(pady=30, padx=50)
root.mainloop()
If you want to change a tkinter.Label's color by pressing a button or getting an input you can do this:
from tkinter import *
root = Tk()
def update_Label_color(color):
if color == "Green":
label.config(background="green")
elif color == "Yellow":
label.config(background="yellow")
elif color == "Red":
label.config(background="red")
color_variable = StringVar(value="Green")
input = Entry(root, bg="orange", textvariable=color_variable)
input.pack(pady=10, padx=50)
button = Button(root, width=30, height=5, text="Button", command= lambda: update_Label_color(color_variable.get()))
button.pack(pady=30, padx=50)
label = Label(root, text="A Text", background="white")
label.pack(pady=30, padx=50)
root.mainloop()