Kivy has a very nice
Animation class, that allows you to move move widgets
around (or other things), by updating any numeric property to a target value,
just by setting a time and a transition function. Still, when you are building
a complex interface, it can still be a bit cumbersome to manually trigger
animations for all the elements, and to keep track of them.
After being frustrated about this issue for some time, i tried my luck some time ago, at doing a nicer, "90% use cases" interface, and the Magnet garden widget was born.
Its usage is simple, you simply use it to wrap your target widget, and give it rules about how to transition when the magnet is moved. As the magnet is moved or resized by the usual kivy logic, instead of making the wrapped widget immediately follow such constraints, it'll create and keep track of animations to achieve a smooth transition to the new values for you.
As any garden "flower", to install it, you need to install and use the garden project.
python setup.py install
(either in a virtualenv or system-wide)
garden install magnet
you can now import it a kivy application:
from kivy.garden.magnet import Magnet