MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / ArrayItem

Class ArrayItem

tools/python-3.11.9-amd64/Tools/demo/sortvisu.py:194–332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

192
193
194class ArrayItem:
195
196 def __init__(self, array, index, value):
197 self.array = array
198 self.index = index
199 self.value = value
200 self.canvas = array.canvas
201 x1, y1, x2, y2 = self.position()
202 self.item_id = array.canvas.create_rectangle(x1, y1, x2, y2,
203 fill='red', outline='black', width=1)
204 self.canvas.tag_bind(self.item_id, '<Button-1>', self.mouse_down)
205 self.canvas.tag_bind(self.item_id, '<Button1-Motion>', self.mouse_move)
206 self.canvas.tag_bind(self.item_id, '<ButtonRelease-1>', self.mouse_up)
207
208 def delete(self):
209 item_id = self.item_id
210 self.array = None
211 self.item_id = None
212 self.canvas.delete(item_id)
213
214 def mouse_down(self, event):
215 self.lastx = event.x
216 self.lasty = event.y
217 self.origx = event.x
218 self.origy = event.y
219 self.canvas.tag_raise(self.item_id)
220
221 def mouse_move(self, event):
222 self.canvas.move(self.item_id,
223 event.x - self.lastx, event.y - self.lasty)
224 self.lastx = event.x
225 self.lasty = event.y
226
227 def mouse_up(self, event):
228 i = self.nearestindex(event.x)
229 if i >= self.array.getsize():
230 i = self.array.getsize() - 1
231 if i < 0:
232 i = 0
233 other = self.array.items[i]
234 here = self.index
235 self.array.items[here], self.array.items[i] = other, self
236 self.index = i
237 x1, y1, x2, y2 = self.position()
238 self.canvas.coords(self.item_id, (x1, y1, x2, y2))
239 other.setindex(here)
240
241 def setindex(self, index):
242 nsteps = steps(self.index, index)
243 if not nsteps: return
244 if self.array.speed == "fastest":
245 nsteps = 0
246 oldpts = self.position()
247 self.index = index
248 newpts = self.position()
249 trajectory = interpolate(oldpts, newpts, nsteps)
250 self.canvas.tag_raise(self.item_id)
251 for pts in trajectory:

Callers 1

setdataMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected