Lines Matching refs:self
123 def __init__(self, source, event):
131 root.__dnd = self
132 self.root = root
133 self.source = source
134 self.target = None
135 self.initial_button = button = event.num
136 self.initial_widget = widget = event.widget
137 self.release_pattern = "<B%d-ButtonRelease-%d>" % (button, button)
138 self.save_cursor = widget['cursor'] or ""
139 widget.bind(self.release_pattern, self.on_release)
140 widget.bind("<Motion>", self.on_motion)
143 def __del__(self):
144 root = self.root
145 self.root = None
152 def on_motion(self, event):
154 target_widget = self.initial_widget.winfo_containing(x, y)
155 source = self.source
167 old_target = self.target
173 self.target = None
177 self.target = new_target
179 def on_release(self, event):
180 self.finish(event, 1)
182 def cancel(self, event=None):
183 self.finish(event, 0)
185 def finish(self, event, commit=0):
186 target = self.target
187 source = self.source
188 widget = self.initial_widget
189 root = self.root
192 self.initial_widget.unbind(self.release_pattern)
193 self.initial_widget.unbind("<Motion>")
194 widget['cursor'] = self.save_cursor
195 self.target = self.source = self.initial_widget = self.root = None
210 def __init__(self, name):
211 self.name = name
212 self.canvas = self.label = self.id = None
214 def attach(self, canvas, x=10, y=10):
215 if canvas is self.canvas:
216 self.canvas.coords(self.id, x, y)
218 if self.canvas is not None:
219 self.detach()
222 label = tkinter.Label(canvas, text=self.name,
225 self.canvas = canvas
226 self.label = label
227 self.id = id
228 label.bind("<ButtonPress>", self.press)
230 def detach(self):
231 canvas = self.canvas
234 id = self.id
235 label = self.label
236 self.canvas = self.label = self.id = None
240 def press(self, event):
241 if dnd_start(self, event):
243 self.x_off = event.x
244 self.y_off = event.y
246 self.x_orig, self.y_orig = self.canvas.coords(self.id)
248 def move(self, event):
249 x, y = self.where(self.canvas, event)
250 self.canvas.coords(self.id, x, y)
252 def putback(self):
253 self.canvas.coords(self.id, self.x_orig, self.y_orig)
255 def where(self, canvas, event):
263 return x - self.x_off, y - self.y_off
265 def dnd_end(self, target, event):
271 def __init__(self, root):
272 self.top = tkinter.Toplevel(root)
273 self.canvas = tkinter.Canvas(self.top, width=100, height=100)
274 self.canvas.pack(fill="both", expand=1)
275 self.canvas.dnd_accept = self.dnd_accept
277 def dnd_accept(self, source, event):
278 return self
280 def dnd_enter(self, source, event):
281 self.canvas.focus_set() # Show highlight border
282 x, y = source.where(self.canvas, event)
285 self.dndid = self.canvas.create_rectangle(x, y, x+dx, y+dy)
286 self.dnd_motion(source, event)
288 def dnd_motion(self, source, event):
289 x, y = source.where(self.canvas, event)
290 x1, y1, x2, y2 = self.canvas.bbox(self.dndid)
291 self.canvas.move(self.dndid, x-x1, y-y1)
293 def dnd_leave(self, source, event):
294 self.top.focus_set() # Hide highlight border
295 self.canvas.delete(self.dndid)
296 self.dndid = None
298 def dnd_commit(self, source, event):
299 self.dnd_leave(source, event)
300 x, y = source.where(self.canvas, event)
301 source.attach(self.canvas, x, y)