2016-08-12 83 views
-1

我是一名新程序员。我刚刚从python学习了Tkinter,为我的代码创建了一个窗口。我想创建一个每30秒循环一次的代码并更改窗口上的文本。这是我到目前为止。Python Tkinter运行循环

import time 
from Tkinter import * 
root = Tk() 
t=1 
while t <= 100: 
    thelabel = Label(root, Text=t) 
    thelabel.pack() 
    root.mainloop() 
    time.sleep(30) 
    t += 1 

但是这段代码由于某种原因不起作用。 错误代码:

Traceback (most recent call last): 
    File "File.py", line 6, in <module> 
    thelabel = Label(root, Text=t) 
    File "/user/lib/python2.7/lib-tk/Tkinter.py", line 2590, in __init__ 
    Widget.__init__(self, master, 'label', cnf, kw) 
    File "/user/lib/python2.7/lib-tk/Tkinter.py", line 2089, in __init__ 
    (widgetName, self._w) + extra + self._options(cnf)) 
tkinter.TclError: unknown option "-Text" 

(我有固定的错字从之前)

+0

你的意思是说',而T <= 100'?另外,你到底意味着什么“不起作用”? – Anonymous

+0

请修复错字,运行它,然后发布你得到的错误或描述它显示的行为以及所需的行为。 –

+0

我使用了给定的代码,我相信你应该将'Label(root,Text = t)'变成'Label(root,text = t)'。这应该修复错误代码。 –

回答

0

要更新Label,有使用textvariableStringVar沿着一个选项。看到这个页面:类似这样的http://effbot.org/tkinterbook/label.htm

东西:

v = StringVar() 
Label(master, textvariable=v).pack() 

v.set("New Text!") 
+0

需要注意的是你可以使用'textvariable'选项,但这不是唯一的方法。 –

+0

我试过你说的话,我的号码仍然没有改变。这里是我的代码: –

+0

从Tkinter导入时间* root = Tk()t = StringVar()thelable = Label(root,textvariable = t).pack()num = 1 t.set(str(num))root。当num <= 100时,mainloop():t.set(num)time.sleep(30)num + = 1 –