关于python Tk中实时的输出.

源码如下:

import time
from Tkinter import *
def run():

while True:

txt.insert(END,'...')

print '...'

time.sleep(10)
root = Tk()
txt = Text(root)
txt.pack()
Button(root,text='Run',command = run).pack()
root.mainloop()

我想达到的目的:
在这个txt中没10s输出 "...".
但python中一定要等到这个 函数运行完成以后才会在txt中输入,类似这种循环就不会停下来..
而在python提供的 shell里面 print又可以实时的打印..

思路是对的,只不过你没调用更新函数,见下面标注。

# -*- coding: gb2312 -*-
 import time
 from Tkinter import *
 def run():
  
while True:
  
    txt.insert(END,'...')
  
    txt.update()#我指的是加这句代码。
  
    #下面两句,回复显示后对不齐,请注意,与上面两句平行
print  '...'#这句没什么用,输出到控制台了,和Tk没关系
time.sleep(10)
 root = Tk()
 txt = Text(root)
 txt.pack()
 Button(root,text='Run',command = run).pack()
 root.mainloop()

  

另外,介意用类封装一下更好管理。
代码见下:
# -*- coding: gb2312 -*-
 import time
 from Tkinter import *
  
class Display:
  def __init__(self):
   self.root = Tk()
   self.text = Text(self.root)
   self.text.pack()
   self.butt = Button(self.root,text='Run',command = self.run)
   self.butt.pack()
  def run(self):
   while True:
    self.text.insert(END, '...')
    self.root.update()#更新以后才能看到变化
    time.sleep(1)#这里为了快点看到效果,改为了1S输出一次
  
if __name__ == '__main__':
  D = Display()
  mainloop()

  

以上代码均已在python2.5下运行。
posted @ 2018-07-16 08:32  Anita_harbour  阅读(3974)  评论(0编辑  收藏  举报