为什么Tkinter函数只在函数完成后才在文本小部件中插入文本?

时间:2011-08-16 09:03:21

标签: python function 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 个答案:

答案 0 :(得分:1)

只有在输入事件循环时才会刷新文本窗口小部件(以及所有窗口小部件)。当您的代码处于循环中时,不会处理任何绘制事件。最简单的解决方案是调用update_idletasks来更新屏幕 - 刷新屏幕被视为“空闲”任务。

有关更多信息,请参阅问题How do widgets update in Tkinter?

的答案