You need to add a $canvas->update() before the sleep, and you'd be advised to replace the sleep with some more Tk-friendly form of delay. In fact, you probably want to replace the whole loop with a timer, whose event handler performs the necessary canvas additions. This would obviate completely the need to update as well as sleep.
in reply to Animation Display appling Delay and Canvas Object
Black flowers blossom
Fearless on my breath