我有2个代码。第二个是基于第一个。不幸的是,由于某些原因,即使第一个没有,第二个也不起作用。
第一个代码:
import time
from Tkinter import *
root = Tk()
t=StringVar()
num=1
t.set(str(num)
thelabel = Label(root, textvariable=t).pack()
def printnum (x):
while x<= 100:
t.set(str(x))
x += 1
root.update()
time.sleep(30)
printnum(num)
root.mainloop()
这段代码就像一个魅力。这是另一个。
第二段代码:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import Adafruit_DHT as dht
import time
from Tkinter import *
root = Tk()
k=StringVar()
num = 1
k.set(str(num))
thelabel = Label(root, textvariable=k).pack
def printnum(x):
while x <= 10000000000000:
h,t = dht.read_retry(dht.DHT22, 4)
newtext = "Temp%s*C Humidity=%s" %(t,h)
k.set(newtext)
x += 1
root.update
time.sleep(30)
printnum(num)
root.mainloop()
代码运行但它没有做任何事情,没有像其他代码那样弹出窗口。请帮助我无法弄清楚如何解决这个问题。或者为什么第一个有效,第二个没有。
答案 0 :(得分:3)
您使用此行上read_retry的温度覆盖之前的t值:
h,t = dht.read_retry(dht.DHT22, 4)
然后,当您尝试拨打set
时,t
现在是一个浮点数,因此没有设置方法。其中一个使用不同的变量名而不是t
。
答案 1 :(得分:1)
root.update
没有做任何事情。您需要添加()
:
root.update()
话虽这么说,你的算法是在tkinter中运行周期性任务的错误方法。见https://stackoverflow.com/a/37681471/7432