1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| from Tkinter import *
class test(Canvas):
def __init__(self, win, bg="white"):
self.canvas = Canvas(win, width=300 ,height=300)
self.canvas.create_oval(100, 0, 200, 100, fill='red', tags='t1')
self.canvas.create_oval(100, 200, 200, 300, fill='blue', tags='t2')
self.canvas.create_line(150, 100, 150, 200, fill='black', tags='t2')
self.canvas.pack(fill=BOTH,expand=1)
#
self.canvas.bind("<Button-1>", self.mouseDown)
self.canvas.bind("<Button1-Motion>", self.mouseMove)
self.canvas.bind("<Button1-ButtonRelease>", self.mouseUp)
def mouseDown(self, event):
self.canvas.currObject =None
self.canvas.x1, self.canvas.y1 = event.x, event.y
self.canvas.selObject = self.canvas.find_closest(self.canvas.x1, self.canvas.y1)
associateTag = self.canvas.gettags(self.canvas.selObject)[0]
print self.canvas.find_withtag('2')
self.canvas.selObject = self.canvas.find_withtag(associateTag)
print self.canvas.selObject
def mouseMove(self, event):
x2, y2 = self.canvas.canvasx(event.x), self.canvas.canvasy(event.y)
dx, dy = x2 -self.canvas.x1, y2 -self.canvas.y1
if self.canvas.selObject:
for itemInselObject in self.canvas.selObject:
self.canvas.move(itemInselObject, dx, dy)
self.canvas.x1, self.canvas.y1 = x2, y2
def mouseUp(self, event):
if self.canvas.selObject:
for itemInselObject in self.canvas.selObject:
self.canvas.selObject =None
mainWindow = Tk()
test(mainWindow)
mainWindow.mainloop() |
Partager