time.sleep
не препятствует выполнению предыдущей команды.Это препятствует тому, чтобы пользовательский интерфейс мог обновить себя, чтобы показать результаты команды.Сама команда была выполнена, но вы не позволяете tkinter показывать ее.
Tkinter является однопоточным, поэтому, пока ваш собственный код выполняется или спит, он не может реагировать на события.Это означает, что не только такие события, как нажатия кнопок, но и внутренние события, такие как запросы на перерисовку окна с новой информацией.
Как правило, никогда не следует вызывать sleep
в том же потоке, что и код графического интерфейса пользователя.потому что он делает именно это: он спит.
Если вам нужно вызвать sleep
, или вы должны вызвать длительный раздел кода, вы можете явно заставить tkinter обновиться, вызвав метод update_idletasks
, общий для всехвиджеты.