Из документации по effbot.org
у нас есть следующее о функции update
:
Обрабатывает все ожидающие события, вызывает обратные вызовы событий, завершает любое ожидающее управление геометрией, при необходимости перерисовывает виджеты и вызывает все ожидающие незанятые задачи. Этот метод следует использовать с осторожностью, так как он может привести к действительно неприятным состояниям гонки, если он вызывается из неправильного места (например, из обратного вызова события или из функции, которая может быть вызвана любым способом из обратного вызова события и т.д.)..). Если вы сомневаетесь, используйте вместо этого
update_idletasks
.
С другой стороны, это функция update_idletasks
:
Вызывает все ожидающие незанятые задачи, без обработки каких-либо других событий. Это может быть использовано для управления геометрией и перерисовки виджетов, если это необходимо, без каких-либо обратных вызовов.
Насколько я понял, оба вызывают все ожидающие незанятые задачи, завершают любое отложенное управление геометрией и перерисовывают виджеты по мере необходимости. Единственное отличие, которое я вижу, заключается в том, что update
обрабатывает все ожидающие события и вызывает обратные вызовы событий. Вот почему мы не должны вызывать update
изнутри ровного обратного вызова, я полагаю.
Однако я видел примеры, когда update_idletasks
и update
используются один за другим, и я не могу понять причину, так как теоретически update
делает все, update_idletasks
делает update_idletasks
.
Что именно представляют собой эти ожидающие события и пустые задачи, о которых говорится в документации? Каковы различия и отношения?
В ответ на это, при каких реальных обстоятельствах я должен использовать update
over update_idletasks
? Конкретные примеры также приветствуются.