|
1 from Tkinter import * |
|
2 |
|
3 # this file demonstrates the movement of a single canvas item under mouse control |
|
4 |
|
5 class Test(Frame): |
|
6 ################################################################### |
|
7 ###### Event callbacks for THE CANVAS (not the stuff drawn on it) |
|
8 ################################################################### |
|
9 def mouseDown(self, event): |
|
10 # remember where the mouse went down |
|
11 self.lastx = event.x |
|
12 self.lasty = event.y |
|
13 |
|
14 def mouseMove(self, event): |
|
15 # whatever the mouse is over gets tagged as CURRENT for free by tk. |
|
16 self.draw.move(CURRENT, event.x - self.lastx, event.y - self.lasty) |
|
17 self.lastx = event.x |
|
18 self.lasty = event.y |
|
19 |
|
20 ################################################################### |
|
21 ###### Event callbacks for canvas ITEMS (stuff drawn on the canvas) |
|
22 ################################################################### |
|
23 def mouseEnter(self, event): |
|
24 # the CURRENT tag is applied to the object the cursor is over. |
|
25 # this happens automatically. |
|
26 self.draw.itemconfig(CURRENT, fill="red") |
|
27 |
|
28 def mouseLeave(self, event): |
|
29 # the CURRENT tag is applied to the object the cursor is over. |
|
30 # this happens automatically. |
|
31 self.draw.itemconfig(CURRENT, fill="blue") |
|
32 |
|
33 def createWidgets(self): |
|
34 self.QUIT = Button(self, text='QUIT', foreground='red', |
|
35 command=self.quit) |
|
36 self.QUIT.pack(side=LEFT, fill=BOTH) |
|
37 self.draw = Canvas(self, width="5i", height="5i") |
|
38 self.draw.pack(side=LEFT) |
|
39 |
|
40 fred = self.draw.create_oval(0, 0, 20, 20, |
|
41 fill="green", tags="selected") |
|
42 |
|
43 self.draw.tag_bind(fred, "<Any-Enter>", self.mouseEnter) |
|
44 self.draw.tag_bind(fred, "<Any-Leave>", self.mouseLeave) |
|
45 |
|
46 Widget.bind(self.draw, "<1>", self.mouseDown) |
|
47 Widget.bind(self.draw, "<B1-Motion>", self.mouseMove) |
|
48 |
|
49 def __init__(self, master=None): |
|
50 Frame.__init__(self, master) |
|
51 Pack.config(self) |
|
52 self.createWidgets() |
|
53 |
|
54 test = Test() |
|
55 test.mainloop() |