despite its evolutionary twiststhe scrollable thumbnail viewer in example - still has one major limitation remainingimages that are larger than the physical screen are simply truncated on windows when popped up this becomes glaringly obvious when opening large photos copied from digital camera like those in figure - moreoverthere is no way to resize images once openedto open other directoriesand so on it' fairly simplistic demonstration of canvas programming in we'll learn how to do better when we meet the pyphoto example program pyphoto will scroll the full size of images as well in additionit has tools for variety of resizing effectsand it supports saving images to files and opening other image directories on the fly at its corethoughpyphoto will reuse the techniques of our simple browser hereas well as the thumbnail generation code we wrote in the prior much like our simple text editor earlier in the the code here is essentially prototype for the more complete pyphoto program we'll put together later in stay tuned for the thrilling conclusion of the pyphoto story (or flip ahead now if the suspense is too much to bearfor the purposes of this notice how in example - the thumbnail viewer' actions are associated with embedded button widgetsnot with the canvas itself in factthe canvas isn' much but display device to see how to enrich it with events of its ownlet' move on to the next section using canvas events like text and listboxthere is no notion of single command callback for canvas insteadcanvas programs generally use other widgets (as we did with example - ' thumbnail buttonsor the lower-level bind call to set up handlers for mouse clickskey pressesand the like (as we did for example - ' scrolling canvasexample - takes the latter approach furthershowing how to bind additional events for the canvas itselfin order to implement few of the more common canvas drawing operations example - pp \gui\tour\canvasdraw py ""draw elastic shapes on canvas on dragmove on right clicksee canvasdraw_tagspy for extensions with tags and animation ""from tkinter import trace false class canvaseventsdemodef __init__(selfparent=none)canvas canvas(width= height= bg='beige'canvas pack(canvas bind(''self onstartclick canvas bind(''self ongrowand drag tkinter tourpart