drawing.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """
  2. *REALLY* Small framework for creating/manipulating/deleting Tkinter Canvas elements.
  3. NOTE: keep this synced with svg.js
  4. Author: Raphael Mannadiar
  5. Date: 2014/08/21
  6. """
  7. from kernel.mvk_server.python_runtime.libs.utils import utils
  8. class drawing:
  9. class canvas_wrapper:
  10. def __init__(self, element):
  11. self.element = element
  12. self.width = int(element.cget("width"))
  13. self.height = int(element.cget("height"))
  14. def add_circle(self, x, y, r, style):
  15. new_element_id = self.element.create_oval(x-r, y-r, x+r, y+r, **style)
  16. return drawing.ui_element_wrapper(self, new_element_id, x, y)
  17. def add_rectangle(self, x, y, w, h, style):
  18. new_element_id = self.element.create_rectangle(x-w/2.0, y-h/2.0, x+w/2.0, y+h/2.0, **style)
  19. return drawing.ui_element_wrapper(self, new_element_id, x, y)
  20. def remove_element(self, element):
  21. self.element.delete(element.element_id)
  22. class ui_element_wrapper:
  23. def __init__(self, canvas_wrapper, element_id, x, y):
  24. self.canvas_wrapper = canvas_wrapper
  25. self.element_id = element_id
  26. self.a = 0
  27. self.x = x
  28. self.y = y
  29. def set_position(self, x, y):
  30. self.move(x-self.x, y-self.y)
  31. def get_position(self):
  32. return utils._bunch(x=self.x, y=self.y)
  33. def move(self, dx, dy):
  34. self.x += dx
  35. self.y += dy
  36. self.canvas_wrapper.element.move(self.element_id, dx, dy)
  37. def set_rotation(self, a):
  38. raise Exception("Not implemented yet")
  39. def rotate(self, a):
  40. raise Exception("Not implemented yet")
  41. def set_color(self, color):
  42. self.canvas_wrapper.element.itemconfig(self.element_id, fill=color)