Guest User

Untitled

a guest
Jul 19th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. import gtk, gobject
  2.  
  3. class Crosslines(object):
  4.  
  5. x_label = None
  6. y_label = None
  7.  
  8. def __init__(self):
  9. self.redraw_timeout = False
  10. window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  11. window.set_title("Crosslines Example")
  12. window.connect("destroy", lambda w: gtk.main_quit())
  13. window.set_size_request(800,600)
  14.  
  15.  
  16. self.area = gtk.DrawingArea()
  17. self.x_label = gtk.Label('kasdhf')
  18. self.y_label = gtk.Label(-1)
  19.  
  20. self.fixed = gtk.Fixed()
  21. self.fixed.set_events(gtk.gdk.POINTER_MOTION_MASK | \
  22. gtk.gdk.POINTER_MOTION_HINT_MASK)
  23. self.fixed.connect("motion_notify_event", self.motion_notify)
  24. self.fixed.set_has_window(True)
  25.  
  26. self.fixed.put(self.x_label, 100, 300)
  27. self.fixed.put(self.y_label, 12, 40)
  28. self.fixed.put(self.area, 0, 0)
  29.  
  30. window.add(self.fixed)
  31. window.show_all()
  32.  
  33. def motion_notify(self, widget, event):
  34.  
  35. x, y = event.get_coords()
  36. x = int(x)
  37. y = int(y)
  38.  
  39. widget.move(self.x_label, x + 5, y -20)
  40. widget.move(self.y_label, x - 30, y -20)
  41. self.x_label.set_text(str(x));
  42. self.y_label.set_text(str(y));
  43.  
  44. drawable = widget.window
  45. print type(drawable)
  46. gc = drawable.new_gc()
  47. gc.set_line_attributes(1, \
  48. gtk.gdk.LINE_SOLID, \
  49. gtk.gdk.CAP_BUTT, \
  50. gtk.gdk.JOIN_ROUND)
  51. rect = widget.get_allocation()
  52. drawable.draw_line(gc, x, 0, x, int(rect.height))
  53. drawable.draw_line(gc, 0, y, int(rect.width), y)
  54.  
  55. if self.redraw_timeout:
  56. gobject.source_remove(self.redraw_timeout)
  57. self.redraw_timeout = gobject.timeout_add(50, self.redraw_lines, drawable, gc, x, y, rect)
  58.  
  59. def redraw_lines(self, drawable, gc, x, y, rect):
  60. drawable.draw_line(gc, x, 0, x, int(rect.height))
  61. drawable.draw_line(gc, 0, y, int(rect.width), y)
  62.  
  63.  
  64. def main():
  65. gtk.main()
  66. return 0
  67.  
  68. if __name__ == '__main__':
  69. Crosslines()
  70. main()
Add Comment
Please, Sign In to add comment