如何在这个程序中每秒显示一次'Hello'而不是显示五个'Hello'?

时间:2014-01-28 05:25:25

标签: python tkinter

#coding=utf-8
'''Tkinter module'''

from Tkinter import *
import time
root=Tk()
t=Text(root,fg='red')

t.pack()
def insert_hello_into_text_area():
    t.insert(1.0,'Hello')

Button(root,text='hello',command=insert_hello_into_text_area).pack()

def start():
    i=0
    while i<5:
        t.insert(1.0,'Hello\n')
        time.sleep(1)
        i+=1

Button(root,text='start',command=start).pack()


root.mainloop()

这是一个使用Tkinter模块的python程序。当我点击“开始”按钮时,我每秒都无法得到一个'你好'。相反,所有'Hello'将在五秒后出现。那么如何在这个程序中一次显示'Hello'而不是显示五个'Hello'?

1 个答案:

答案 0 :(得分:4)

使用after

,而不是使用while循环time.sleep

aftern(以下代码为1000)毫秒后调用回调。

def start(times=5):
    t.insert(END, 'Hello\n')
    if times > 1:
        root.after(1000, lambda: start(times-1))