Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter
- class Polygon:
- def __init__(self, ax, ay, bx, by, cx, cy, dx=None, dy=None, color=None):
- self.ax = ax
- self.ay = ay
- self.bx = bx
- self.by = by
- self.cx = cx
- self.cy = cy
- self.dx = dx
- self.dy = dy
- self.color = color
- def is_click(self, event, g, event_x, event_y):
- widget_id = event.widget.find_closest(event.x, event.y)
- print(widget_id)
- g.move(widget_id, 1, 1) # just dummy move for a clicked widget
- pass
- def paint(self, g):
- self.g = g
- if self.dx is None:
- self.id = self.g.create_polygon(self.ax,self.ay,
- self.bx,self.by,
- self.cx,self.cy,
- fill=self.color)
- else:
- self.id = self.g.create_polygon(self.ax,self.ay,
- self.bx,self.by,
- self.cx,self.cy,
- self.dx,self.dy,
- fill=self.color)
- def move(self, d_ax=0, d_ay=0, d_bx=0, d_by=0, d_cx=0, d_cy=0, d_dx=None, d_dy=None):
- if d_dx is None:
- self.ax += d_ax
- self.ay += d_ay
- self.bx += d_bx
- self.by += d_by
- self.cx += d_cx
- self.cy += d_cy
- self.g.move(self.id, d_ax, d_ay, d_bx, d_by, d_cx, d_cy)
- else:
- self.ax += d_ax
- self.ay += d_ay
- self.bx += d_bx
- self.by += d_by
- self.cx += d_cx
- self.cy += d_cy
- self.dx += d_dx
- self.dy += d_dy
- self.g.move(self.id, d_ax, d_ay, d_bx, d_by, d_cx, d_cy, d_dx, d_dy)
- class Tangram:
- def __init__(self):
- self.array = []
- self.g = tkinter.Canvas(width=800,height=800)
- self.g.pack()
- #all objects
- self.add(Polygon(500,300,625,175,750,300, color='SeaGreen'))
- self.add(Polygon(750,50,625,175,750,300, color='Tomato'))
- self.add(Polygon(500,175,562.6,237.5,500,300, color='SteelBlue'))
- self.add(Polygon(500,175,562.5,237.5,625,175,562.5,112.5, color='FireBrick'))
- self.add(Polygon(562.5,112.5,625,175,687.5,112.5, color='DarkMagenta'))
- self.add(Polygon(500,50,500,175,625,50, color='Gold'))
- self.add(Polygon(562.5,112.5,687.5,112.5,750,50,625,50, color='DarkTurquoise'))
- #end of all objects
- self.g.bind('<Button-1>', self.event_move_start)
- def add(self, Object):
- self.array.append(Object)
- Object.paint(self.g)
- def event_move_start(self, event):
- ix = len(self.array) - 1
- while ix >= 0 and not self.array[ix].is_click(event, self.g, event.x, event.y):
- ix -= 1
- if ix < 0:
- self.Object = None
- return
- self.Object = self.array[ix]
- self.ex, self.ey = event.x, event.y
- self.g.bind('<B1-Motion>', self.event_move)
- self.g.bind('<ButtonRelease-1>', self.event_release)
- def event_move(self):
- pass
- def event_release(self):
- pass
- root = tkinter.Tk()
- p = Tangram()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement