canvas' scrollable (fullsize is the image sizeand the viewable area size is the minimum of the physical screen size or the size of the image itself the physical screen size is available from the maxsize(method of toplevel windows the net effect is that selected images may be scrolled nowtoowhich comes in handy if they are too big for your display ( common case for pictures snapped with newer digital camerasin additionpyphoto binds keyboard and mouse events to implement resizing and zoom operations with pilthis is simple--we save the original pil imagerun its resize method with the new image sizeand redraw the image in the canvas pyphoto also makes use of file open and save dialog objectsto remember the last directory visited pil supports additional operationswhich we could add as new eventsbut resizing is sufficient for viewer pyphoto does not currently use threadsto avoid becoming blocked for long-running tasks (opening large directory the first timefor instancesuch enhancements are left as suggested exercises complete gui programs