• Как произвести вывод промежуточных результатов вычисления в элемент tkinter?

    Vindicar
    @Vindicar
    RTFM!
    В большинстве случаев, когда изменяешь элемент управления, он не перерисовывает себя немедленно - он только принимает к сведению, что ему нужно будет перерисовать себя при первой возможности. А первая возможность ему представится, когда твой обработчик calc() закончит работу.

    Поэтому есть пара вариантов.
    1. вызывать внутри цикла в calc() root.update_idletasks(). Это приостановит твой обработчик и даст шанс элементам управления отрисоваться, а потом возобновит выполнение.
    2. Разбить обработчик на отдельные короткие (это важно!) итерации. В конце каждой итерации планировать выполнение следующей с помощью root.after(), если требуется. Тогда в промежутках между завершением текущей итерации и вызовом запланированной следующей ткинтер будет успевать отрисовываться.

    В обоих случаех следует предусмотреть/проверить, что будет если нажать на кнопку дважды. Я подозреваю, ничего хорошего, так что кнопку стоит отключить на время выполнения обработчика.
    Ответ написан
    4 комментария