2011-08-16 20 views
0

我有一個問題,如果我有一個函數插入一個文本小部件列表中的項目,然後做一些與該項目,它首先完成處理所有項目,然後插入文本小部件。爲什麼Tkinter函數只在函數完成後纔在文本控件中插入文本?

下面是一個簡單的代碼演示我說的話:

from Tkinter import* 
import Tkinter as tk 

list = range(1,1000) 

def highlow(): 
    for numbers in list: 
     text1.insert(END,'Number : '+str(numbers)+'\n') 
    if numbers>500: 
     print 'High' 
    else: 
     print 'Low' 

app=Tk() 
app.title("Window Title") 
app.geometry('400x400+200+200') 
app.resizable(0,0) 

button=Button(app,text="Run",font=("Times", 12, "bold"), width=20 ,borderwidth=5, foreground = 'white',background = 'blue',command=highlow) 
button.pack() 

text1 = Text(app,height = 60,font=("Times", 12)) 
text1.insert(END,"") 
text1.pack(padx=15,pady=1) 


app.mainloop() 
+1

問題是什麼?請修改您的帖子以添加明確的問題。另外,請讓你的問題的標題更具體。 – agf

+0

您的帖子中仍然沒有問題,只是在頂部和一些代碼的句子。如果您不添加一個,我將投票結束爲「不是真正的問題」。 – agf

+0

問題是,僅當函數結束處理列表中的所有項目時,纔會將文本插入到文本小部件中。 – GiannisIordanou

回答

1

文本組件(和所有小部件)進入事件循環時才被刷新。當您的代碼處於循環中時,不會處理任何繪畫事件。最簡單的解決方法是撥打update_idletasks更新屏幕 - 刷新屏幕被認爲是「空閒」任務。

有關更多信息,請參閱問題的答案How do widgets update in Tkinter?

+0

謝謝,我使用了文本小部件的update_idletasks,它工作。 – GiannisIordanou

相關問題