Вопрос по python – Python time.sleep

8

Я пытаюсь удалить текст внутри текстового поля после ожидания 5 секунд, но вместо этого программа не запускается и спит над всем остальным. Также есть ли способ для меня, чтобы просто перевести текстовое поле в спящий режим, чтобы я мог запустить другой код, пока текст заморожен?

<code>from time import time, sleep
from Tkinter import *

def empty_textbox():
    textbox.insert(END, 'This is a test')
    sleep(5)
    textbox.delete("1.0", END)

root = Tk()

frame = Frame(root, width=300, height=100)
textbox = Text(frame)

frame.pack_propagate(0)
frame.pack()
textbox.pack()

empty_textbox()

root.mainloop()
</code>
У меня нет большого опыта работы с TKinter, но я уверен, что вам нужно использовать какой-то цикл обработки событий или отдельный поток. sberry
@sberry: определенно не поток, и уже запущен цикл обработки событий. Это решается тривиальноafter который помещает событие в очередь для обработки в определенное время в будущем. Bryan Oakley

Ваш Ответ

1   ответ
12

после метода скорее, чемtime.sleep(...).

Здесь приведен пример использования метода afterдругой вопрос stackoverflow.

Вот модифицированная версия вашего скрипта, которая использует метод after:

from time import time, sleep
from Tkinter import *

def empty_textbox():
    textbox.delete("1.0", END)

root = Tk()

frame = Frame(root, width=300, height=100)
textbox = Text(frame)

frame.pack_propagate(0)
frame.pack()
textbox.pack()

textbox.insert(END, 'This is a test')
textbox.after(5000, empty_textbox)

root.mainloop()
Error: User Rate Limit Exceeded Crispy

Похожие вопросы