Tkinter的Text如何实时显示insert的内容?

ouyangbro 2014-02-18 05:13:04

from Tkinter import *
import time

def onGo():
for i in range(50):
t.insert(END,'a_'+str(i))
time.sleep(1)

root = Tk()
t = Text(root)
t.pack()
goBtn = Button(text = "Go!",command = onGo)
goBtn.pack()
root.mainloop()





大神好,小弟想要达到的效果是,点击Go按钮后,一个数字一个数字的实时弹出来。。
而不是处理完毕后一下子都出来了。。

...全文
3456 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2015-04-29
  • 打赏
  • 举报
回复 7
from Tkinter import *
import time
 
def onGo():        
        for i in range(50):
                t.insert(END,'a_'+str(i))
                time.sleep(0.1)
                t.update()
                 
root = Tk()
t = Text(root)
t.pack()
goBtn = Button(text = "Go!",command = onGo)
goBtn.pack()
root.mainloop()
ouyangbro 2014-02-18
  • 打赏
  • 举报
回复
引用 2 楼 angel_su 的回复:
from Tkinter import *
 
def onGo():        
    def counter(i):        
        if i > 0:
            t.insert(END,'a_'+str(i))
            t.after(1000, counter, i-1)
        else:
            goBtn.config(state=NORMAL)

    
    goBtn.config(state=DISABLED)
    counter(50)
                 
root = Tk()
t = Text(root)
t.pack()
goBtn = Button(text = "Go!",command = onGo)
goBtn.pack()
root.mainloop()
你碉堡了。。
angel_su 2014-02-18
  • 打赏
  • 举报
回复
from Tkinter import *
 
def onGo():        
    def counter(i):        
        if i > 0:
            t.insert(END,'a_'+str(i))
            t.after(1000, counter, i-1)
        else:
            goBtn.config(state=NORMAL)
    
    goBtn.config(state=DISABLED)
    counter(50)
                 
root = Tk()
t = Text(root)
t.pack()
goBtn = Button(text = "Go!",command = onGo)
goBtn.pack()
root.mainloop()
angel_su 2014-02-18
  • 打赏
  • 举报
回复
gui编程忌讳while这种阻塞式调用,一般是用计时器方式定时触发,tk控件有个通用的after...

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧