self canvas postscript(file=filesave canvas to file def help(self)self settextinfo(helpstr#showinfo('pydraw'helpstrdef settextinfo(selftext)self canvas dchars(self textinfo endself canvas insert(self textinfo textself canvas tkraise(self textinfodef onquit(self)if self movingself settextinfo("can' quit while move in progress"elseself realquit(std wm deleteerr msg if move in progress def traceevent(labeleventfulltrace=true)print(labelif fulltracefor atrr in dir(event)if attr[: !'__'print(attr'=>'getattr(eventattr)if __name__ ='__main__'from sys import argv if len(argv= picdir argv[ root tk(movingpics(rootroot mainloop(when this file is executed fails if run elsewhere makerun movingpics object as isonly one object can be in motion at time--requesting an object move while one is already in motion pauses the original till the new move is finished just as in ' canvasdraw examplesthoughwe can add support for moving more than one object at the same time with either after scheduled callback events or threads example - shows movingpics subclass that codes the necessary customizations to do parallel moves with after events it allows any number of objects in the canvasincluding picturesto be moving independently at once run this file directly to see the differencei could try to capture the notion of multiple objects in motion with screenshotbut would almost certainly fail example - pp \gui\movingpics\movingpics_after py ""pydraw-aftersimple canvas paint program and object mover/animator use widget after scheduled events to implement object move loopssuch that more than one can be in motion at once without having to use threadsthis does moves in parallelbut seems to be slower than time sleep versionsee also canvasdraw in tourbuilds and passes the incx/incy list at onceherewould be allmoves ([(incrx )reptx([( incry)repty"" complete gui programs