關於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下運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM