Основной шаблон для создания анимации или периодических задач с Tkinter - это написать функцию, которая рисует один кадр или выполняет одну задачу. Затем используйте что-то подобное, чтобы вызвать его через регулярные промежутки времени:
def animate(self):
self.draw_one_frame()
self.after(100, self.animate)
Как только вы вызываете эту функцию один раз, она будет продолжать рисовать кадры со скоростью десять в секунду - один раз каждые 100 миллисекунд. Вы можете изменить код, чтобы проверить флажок, если вы хотите остановить анимацию после ее запуска. Например:
def animate(self):
if not self.should_stop:
self.draw_one_frame()
self.after(100, self.animate)
У вас была бы кнопка, которая при нажатии кнопки self.should_stop
на False
Я просто хотел добавить ответ Брайана. Мне не хватает комментариев для комментариев.
Еще одна идея - использовать self.after_cancel()
для остановки анимации.
Итак ...
def animate(self):
self.draw_one_frame()
self.stop_id = self.after(100, self.animate)
def cancel(self):
self.after_cancel(self.stop_id)