3 # this is the same as simple-demo-1.py, but uses
5 # note that there is no explicit call to start Tk.
6 # Tkinter is smart enough to start the system if it's not already going.
12 def createWidgets(self
):
13 self
.QUIT
= Button(self
, text
='QUIT',
18 self
.QUIT
.pack(side
=BOTTOM
, fill
=BOTH
)
20 self
.canvasObject
= Canvas(self
, width
="5i", height
="5i")
21 self
.canvasObject
.pack(side
=LEFT
)
23 def mouseDown(self
, event
):
24 # canvas x and y take the screen coords from the event and translate
25 # them into the coordinate system of the canvas object
26 self
.startx
= self
.canvasObject
.canvasx(event
.x
, self
.griddingSize
)
27 self
.starty
= self
.canvasObject
.canvasy(event
.y
, self
.griddingSize
)
29 def mouseMotion(self
, event
):
30 # canvas x and y take the screen coords from the event and translate
31 # them into the coordinate system of the canvas object
32 x
= self
.canvasObject
.canvasx(event
.x
, self
.griddingSize
)
33 y
= self
.canvasObject
.canvasy(event
.y
, self
.griddingSize
)
35 if (self
.startx
!= event
.x
) and (self
.starty
!= event
.y
) :
36 self
.canvasObject
.delete(self
.rubberbandBox
)
37 self
.rubberbandBox
= self
.canvasObject
.create_rectangle(
38 self
.startx
, self
.starty
, x
, y
)
39 # this flushes the output, making sure that
40 # the rectangle makes it to the screen
41 # before the next event is handled
42 self
.update_idletasks()
44 def __init__(self
, master
=None):
45 Frame
.__init
__(self
, master
)
49 # this is a "tagOrId" for the rectangle we draw on the canvas
50 self
.rubberbandBox
= None
52 # this is the size of the gridding squares
53 self
.griddingSize
= 50
55 Widget
.bind(self
.canvasObject
, "<Button-1>", self
.mouseDown
)
56 Widget
.bind(self
.canvasObject
, "<Button1-Motion>", self
.mouseMotion
)