为什么这些tkinter程序的行为不一样?

时间:2016-08-15 18:38:19

标签: python tkinter raspberry-pi

我有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()

代码运行但它没有做任何事情,没有像其他代码那样弹出窗口。请帮助我无法弄清楚如何解决这个问题。或者为什么第一个有效,第二个没有。

2 个答案:

答案 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