源碼如下:
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下運行。
