although not used by the canvas scriptevery object you put on canvas has an identifierreturned by the create_ method that draws or embeds the object (what was coded as id in the last section' examplesthis identifier can later be passed to other methods that move the object to new coordinatesset its configuration optionsdelete it from the canvasraise or lower it among other overlapping objectsand so on for instancethe canvas move method accepts both an object identifier and and offsets (not coordinates)and it moves the named object by the offsets givencanvas move(objectidortagoffsetxoffsetymove object(sby offset if this happens to move the object off-screenit is simply clipped (not shownother common canvas operations process objectstoocanvas delete(objectidortagcanvas tkraise(objectidortagcanvas lower(objectidortagcanvas itemconfig(objectidortagfill='red'delete object(sfrom canvas raise object(sto front lower object(sbelow others fill object(swith red color notice the tkraise name--raise by itself is reserved word in python also note that the itemconfig method is used to configure objects drawn on canvas after they have been createduse config to set configuration options for the canvas itself probably the best thing to notice herethoughis that because tkinter is based on structured objectsyou can process graphic object all at oncethere is no need to erase and redraw each pixel manually to implement move or raise canvas object tags but canvases offer even more power than suggested so far in addition to object identifiersyou can also perform canvas operations on entire sets of objects at onceby associating them all with taga name that you make up and apply to objects on the display tagging objects in canvas is at least similar in spirit to tagging substrings in the text widget we studied in the prior section in general termscanvas operation methods accept either single object' identifier or tag name for exampleyou can move an entire set of drawn objects by associating all with the same tag and passing the tag name to the canvas move method in factthis is why move takes offsetsnot coordinates--when given tageach object associated with the tag is moved by the same ( ,yoffsetsabsolute coordinates would make all the tagged objects appear on top of each other instead to associate an object with tageither specify the tag name in the object drawing call' tag option or call the addtag_withtag(tagobjectidortagcanvas method (or its relativesfor instancecanvas create_oval( fill='red'tag='bubbles'canvas create_oval( fill='red'tag='bubbles'objectid canvas create_oval( fill='red'canvas