
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:
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:
Adjunto imagen con ejemplo de lo que quiero llegar...
Si alguien me pudiera ayudar le estaria muy agradecido...

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...

Valora esta pregunta


0