Почему функция Tkinter вставляет текст в текстовый виджет только после завершения функции? - PullRequest
0 голосов
/ 16 августа 2011

У меня есть вопрос, чтобы сделать. Если у меня есть функция вставки элемента из списка в текстовом виджете, а затем что-то делать с этим элементом, он сначала заканчивает обработку всех элементов, а затем выполняет вставку в текстовый виджет.

Вот простой код, демонстрирующий то, что я говорю:

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 Ответ

1 голос
/ 16 августа 2011

Текстовый виджет (и все виджеты) обновляются только при входе в цикл обработки событий. Пока ваш код находится в цикле, никакие события рисования не обрабатываются. Самое простое решение - вызвать update_idletasks для обновления экрана - обновление экрана считается «пустой» задачей.

Для получения дополнительной информации см. Ответы на вопрос Как обновляются виджеты в Tkinter?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...