python - texto - La ventana de Tkinter está en blanco cuando se ejecuta
tablas en tkinter (1)
Cuando ejecuto mi código tkinter para medir la temperatura con Adafruit. Cuando ejecuto mi código, tkinter abre una ventana, pero no aparece nada en la ventana. He usado tkinter un poco antes y he tenido lo que se supone que debe aparecer pero no en este código en particular.
#!/usr/bin/python
# -*- coding: latin-1 -*-
import Adafruit_DHT as dht
import time
from Tkinter import *
root = Tk()
k= StringVar()
num = 1
thelabel = Label(root, textvariable=k)
thelabel.pack
def READ():
h,t = dht.read_retry(dht.DHT22, 4)
newtext = "Temp=%s*C Humidity=%s" %(t,h)
k.set(str(newtext))
print newtext #I added this line to make sure that newtext actually had the values I wanted
def read30seconds():
READ()
root.after(30000, read30seconds)
read30seconds()
root.mainloop()
Y para aclarar la línea de impresión en READ se ejecuta cada 30 segundos como se esperaba.
es porque no lo está empaquetando en la ventana, pero lo está imprimiendo en el shell de python.
debe reemplazar ese print newtext
con:
w = Label(root, text=newtext)
w.pack()
un código de trabajo debería verse así:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import Adafruit_DHT as dht
import time
from Tkinter import *
root = Tk()
k= StringVar()
num = 1
thelabel = Label(root, textvariable=k)
thelabel.pack
def READ():
h,t = dht.read_retry(dht.DHT22, 4)
newtext = "Temp=%s*C Humidity=%s" %(t,h)
k.set(str(newtext))
w = Label(root, text=newtext)
w.pack()
def read30seconds():
READ()
root.after(30000, read30seconds)
read30seconds()
root.mainloop()
tenga en cuenta que este es un código muy básico gráficamente hablando. Para obtener más información sobre este tema, visite este tutorial de la etiqueta tkinter y para obtener más información acerca de tkinter visite esta introducción a tkinter.
si desea sobrescribir la etiqueta cada vez que se actualiza, debe usar el método destroy()
para eliminar y luego reemplazar la etiqueta de esta manera:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import Adafruit_DHT as dht
import time
from Tkinter import *
root = Tk()
k= StringVar()
num = 1
thelabel = Label(root, textvariable=k)
thelabel.pack
def READ():
global w
h,t = dht.read_retry(dht.DHT22, 4)
newtext = "Temp=%s*C Humidity=%s" %(t,h)
k.set(str(newtext))
print newtext #I added this line to make sure that newtext actually had the values I wanted
def read30seconds():
READ()
try: w.destroy()
except: pass
root.after(30000, read30seconds)
read30seconds()
root.mainloop()