Tkinter работает в одном потоке.Поэтому, когда вы нажимаете кнопку, команда обратного вызова, очевидно, не возвращается в течение длительного времени.Это заставляет графический интерфейс Tkinter зависать до тех пор, пока не будет возвращена команда обратного вызова.
Если возможно, решение состоит в том, чтобы разбить команду обратного вызова на более мелкие части, возможно, цикл, и часто вызывать update_idletasks () достаточно для обновления графического интерфейса Tkinter.
Если это невозможно, то команда обратного вызова должна порождать поток , поэтому ее выполнение не будет блокировать основной цикл событий Tkinter.