Shull
@Shull
хочу быть хорошим IT-шником

Как работает tkinter after?

Если я делаю так:
import tkinter
window=tkinter.Tk()

def bum():
    print("BUM!")

print(1)
window.after(1000, bum)
print(2)

window.mainloop()

... то я получаю 1, 2, *задержка*, "BUM!".
Тут всё понятно.

Но, если я делаю так:
import tkinter
window=tkinter.Tk()

print(1)
window.after(1000, print("BUM!"))
print(3)

window.mainloop()

... то я получаю 1, "BUM!", "задержка", 2

Как так, почему?
  • Вопрос задан
  • 1855 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Tkinter
Седой и строгий
Потому что в первом случае вы передаёте методу after ссылку на функцию bum, которая будет вызвана через 1000 миллисекунд. А во втором случае, вы сразу же вызываете функцию print и передаёте возвращённое ею значение None вторым аргументом метода after, который он проигнорирует.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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