When it comes to graphics, the Tkinter
Canvas widget is the most free-form device
in the library. It’s a place to draw shapes, move objects dynamically,
and place other kinds of widgets. The canvas is based on a structured graphic object model:
everything drawn on a canvas can be processed as an object. You can
get down to the pixel-by-pixel level in a canvas, but you can also
deal in terms of larger objects such as shapes, photos, and embedded
widgets. And the canvas is powerful enough to support everything from
simple paint programs to full-scale visualization and
Basic Canvas Operations
Canvases are ubiquitous in much nontrivial GUI work, and we’ll see larger canvas examples show up later in this book under the names PyDraw, PyView, PyClock, and PyTree. For now, let’s jump right into an example that illustrates the basics. Example 10-13 runs most of the major canvas drawing methods.
Example 10-13. PP3E\Gui\Tour\canvas1.py
# demo all basic canvas interfaces from Tkinter import * canvas = Canvas(width=300, height=300, bg='white') # 0,0 is top left corner canvas.pack(expand=YES, fill=BOTH) # increases down, right canvas.create_line(100, 100, 200, 200) # fromX, fromY, toX, toY canvas.create_line(100, 200, 200, 300) # draw shapes for i in range(1, 20, 2): canvas.create_line(0, i, 50, i) canvas.create_oval(10, 10, 200, 200, width=2, fill='blue') canvas.create_arc(200, 200, 300, 100) canvas.create_rectangle(200, 200, 300, 300, width=5, fill='red') canvas.create_line(0, ...