Предположу, что анимации вы не наблюдаете из-за того, что координаты центров маятников у вас практически не изменяются (целая часть постоянна). Думаю, дело в функции final_calculations. Её код можете показать?
UPD: в этом коде, конечно, прекрасно всё. Ошибка, думаю, кроется здесь (см. комментарий в последней строке):
i = 0
...
class Pendulum(object):
def __init__(self):
...
self.root.after(0, self.animation, i)
def animation(self, i):
i = i # полагаю, i всегда равно 0
исправить предлагаю так (не самый лучший способ, но он предполагает минимальные изменения в коде):
i = 0
...
class Pendulum(object):
def __init__(self):
...
self.root.after(0, self.animation)
def animation(self):
global i
Однако, учитывая, мягко говоря, неординарную структуру кода, возможно, придется исправить текст программы еще в некоторых местах.