Python - cambiar color de un label segun un valor variable

 
Vista:
sin imagen de perfil

cambiar color de un label segun un valor variable

Publicado por leonel (5 intervenciones) el 01/12/2015 17:33:35
Estoy trabajando en mi proyecto de tutulacion, en donde tengo que mostrar en una interfaz grafica las lecturas de un sensor ultrasonico conectado a arduino. El lenguaje de programación utilizado es python.

Fragmente del programa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from Tkinter import *
import serial
from time import sleep
 
 
def update(arduino, app2, leyendop, leyendol):
    while True:
        lectura=int(arduino.readline())
        porcentaje=((lectura * 100)/35)
        litros=(lectura * 0.25)
        leyendop.set(porcentaje)
        leyendol.set(litros)
        app2.update()
        sleep(0.3)
 
def cambiar():     #cambiar es el command cargado a un boton de una ventana anterior (app) para abrir app2
    arduino=serial.Serial(2,9600)      #puerto serial para comunicar python con arduino
    app2=Toplevel(app)
    app2.title("Nivel")
    app2.geometry("600x300+350+200")
    lblnivel = Label(app2,text="Nivel en porcentaje:").place(x=250, y=50)
    lbllitros = Label(app2,text="Total:").place(x=260, y=110)
    leyendol=StringVar()
    lbllitros= Label(app2,width=4,textvariable=leyendol).place(x=295, y=110)
    lblltrs=Label(app2,width=3,text="litros").place(x=325, y=110)
    lblporcentaje=Label(app2,text="%",width=3).place(x=510, y=80)
    leyendop=StringVar()
    lvl10 = Label(app2, width=4, bg=white).place(x=90, y=80)
        def volver():
        app.deiconify()
        app2.withdraw()
    boton2 = Button(app2,text="volver", command=volver).place(x=520, y=250,)
    app.withdraw()
    update(arduino, app2, leyendop, leyendol)

Con el anterior programa soy capaz de mostrar en pantalla dos labels con las lecturas en porcentajes y en litros de los datos del sensor conectado a arduino. lo que necesito ahora es hacer una especie de barra de carga con 10 labels que cada uno representa un 10%... el primero fue nombrado como "lvl10"por lo que debe cambiar de color alcanzado el 10% de la lectura a medida que va incrementando el valor del porcentaje alvergado en la variable "leyendop".

He probado con el siguiente codigo pero nada:

1
2
3
4
5
color=StringVar()
color.set("white")
if leyendop >= 10:
        lvl10.config(bg="green")
lvl10 = Label(app2, width=4, bg=color.get()).place(x=90, y=80)

Adjunto imagen con ejemplo de lo que quiero llegar...

Si alguien me pudiera ayudar le estaria muy agradecido...






asdasda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder