home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyos2bin.zip / Demo / tkinter / matt / canvas-moving-or-creating.py < prev    next >
Text File  |  1997-09-24  |  2KB  |  66 lines

  1. from Tkinter import *
  2.  
  3. # this file demonstrates a more sophisticated movement -- 
  4. # move dots or create new ones if you click outside the dots
  5.  
  6. class Test(Frame):
  7.     ###################################################################
  8.     ###### Event callbacks for THE CANVAS (not the stuff drawn on it)
  9.     ###################################################################
  10.     def mouseDown(self, event):
  11.     # see if we're inside a dot. If we are, it
  12.     # gets tagged as CURRENT for free by tk.
  13.     if not event.widget.find_withtag(CURRENT):
  14.         # there is no dot here, so we can make one,
  15.         # and bind some interesting behavior to it.
  16.         # ------
  17.         # create a dot, and mark it as CURRENT
  18.         fred = self.draw.create_oval(
  19.         event.x - 10, event.y -10, event.x +10, event.y + 10,
  20.         fill="green", tags=CURRENT)
  21.  
  22.         self.draw.tag_bind(fred, "<Any-Enter>", self.mouseEnter)
  23.         self.draw.tag_bind(fred, "<Any-Leave>", self.mouseLeave)
  24.  
  25.     self.lastx = event.x
  26.     self.lasty = event.y
  27.  
  28.     def mouseMove(self, event):
  29.     self.draw.move(CURRENT, event.x - self.lastx, event.y - self.lasty)
  30.     self.lastx = event.x
  31.     self.lasty = event.y
  32.  
  33.     ###################################################################
  34.     ###### Event callbacks for canvas ITEMS (stuff drawn on the canvas)
  35.     ###################################################################
  36.     def mouseEnter(self, event):
  37.         # the CURRENT tag is applied to the object the cursor is over.
  38.     # this happens automatically.
  39.     self.draw.itemconfig(CURRENT, fill="red")
  40.  
  41.     def mouseLeave(self, event):
  42.     # the CURRENT tag is applied to the object the cursor is over.
  43.     # this happens automatically.
  44.     self.draw.itemconfig(CURRENT, fill="blue")
  45.  
  46.     def createWidgets(self):
  47.     self.QUIT = Button(self, text='QUIT', foreground='red', 
  48.                command=self.quit)
  49.     self.QUIT.pack(side=LEFT, fill=BOTH)
  50.     self.draw = Canvas(self, width="5i", height="5i")
  51.     self.draw.pack(side=LEFT)
  52.  
  53.     Widget.bind(self.draw, "<1>", self.mouseDown)
  54.     Widget.bind(self.draw, "<B1-Motion>", self.mouseMove)
  55.  
  56.     def __init__(self, master=None):
  57.     Frame.__init__(self, master)
  58.     Pack.config(self)
  59.     self.createWidgets()
  60.  
  61. test = Test()
  62. test.mainloop()
  63.  
  64.  
  65.  
  66.