Changeset 1779 for branches/mergetest/python/asaplotgui.py
- Timestamp:
- 07/29/10 19:13:46 (14 years ago)
- Location:
- branches/mergetest
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/mergetest
- Property svn:mergeinfo changed
-
branches/mergetest/python/asaplotgui.py
r1563 r1779 56 56 self.window.lift() 57 57 58 def position(self):59 """60 Use the mouse to get a position from a graph.61 """62 63 def position_disable(event):64 self.register('button_press', None)65 print '%.4f, %.4f' % (event.xdata, event.ydata)66 67 print 'Press any mouse button...'68 self.register('button_press', position_disable)69 70 71 58 def quit(self): 72 59 """ … … 74 61 """ 75 62 self.window.destroy() 76 77 78 def region(self):79 """80 Use the mouse to get a rectangular region from a plot.81 82 The return value is [x0, y0, x1, y1] in world coordinates.83 """84 85 def region_start(event):86 height = self.canvas.figure.bbox.height()87 self.rect = {'fig': None, 'height': height,88 'x': event.x, 'y': height - event.y,89 'world': [event.xdata, event.ydata,90 event.xdata, event.ydata]}91 self.register('button_press', None)92 self.register('motion_notify', region_draw)93 self.register('button_release', region_disable)94 95 def region_draw(event):96 self.canvas._tkcanvas.delete(self.rect['fig'])97 self.rect['fig'] = self.canvas._tkcanvas.create_rectangle(98 self.rect['x'], self.rect['y'],99 event.x, self.rect['height'] - event.y)100 101 def region_disable(event):102 self.register('motion_notify', None)103 self.register('button_release', None)104 105 self.canvas._tkcanvas.delete(self.rect['fig'])106 107 self.rect['world'][2:4] = [event.xdata, event.ydata]108 print '(%.2f, %.2f) (%.2f, %.2f)' % (self.rect['world'][0],109 self.rect['world'][1], self.rect['world'][2],110 self.rect['world'][3])111 112 self.register('button_press', region_start)113 114 # This has to be modified to block and return the result (currently115 # printed by region_disable) when that becomes possible in matplotlib.116 117 return [0.0, 0.0, 0.0, 0.0]118 119 120 def register(self, type=None, func=None):121 """122 Register, reregister, or deregister events of type 'button_press',123 'button_release', or 'motion_notify'.124 125 The specified callback function should have the following signature:126 127 def func(event)128 129 where event is an MplEvent instance containing the following data:130 131 name # Event name.132 canvas # FigureCanvas instance generating the event.133 x = None # x position - pixels from left of canvas.134 y = None # y position - pixels from bottom of canvas.135 button = None # Button pressed: None, 1, 2, 3.136 key = None # Key pressed: None, chr(range(255)), shift,137 win, or control138 inaxes = None # Axes instance if cursor within axes.139 xdata = None # x world coordinate.140 ydata = None # y world coordinate.141 142 For example:143 144 def mouse_move(event):145 print event.xdata, event.ydata146 147 a = asaplot()148 a.register('motion_notify', mouse_move)149 150 If func is None, the event is deregistered.151 152 Note that in TkAgg keyboard button presses don't generate an event.153 """154 155 if not self.events.has_key(type): return156 157 if func is None:158 if self.events[type] is not None:159 # It's not clear that this does anything.160 self.canvas.mpl_disconnect(self.events[type])161 self.events[type] = None162 163 # It seems to be necessary to return events to the toolbar.164 if type == 'motion_notify':165 self.canvas.mpl_connect(type + '_event',166 self.figmgr.toolbar.mouse_move)167 elif type == 'button_press':168 self.canvas.mpl_connect(type + '_event',169 self.figmgr.toolbar.press)170 elif type == 'button_release':171 self.canvas.mpl_connect(type + '_event',172 self.figmgr.toolbar.release)173 174 else:175 self.events[type] = self.canvas.mpl_connect(type + '_event', func)176 177 63 178 64 def show(self, hardrefresh=True):
Note: See TracChangeset
for help on using the changeset viewer.