home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Demo / tkinter / matt / canvas-moving-w-mouse.py < prev    next >
Text File  |  1996-07-30  |  2KB  |  56 lines

  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()
  56.