 <p>You can create bindings that set a flag on button press, and release the flag on button release. You can set a binding on mouse motion that colors the item under the cursor when the flag is set. </p> <p>It would look something like this:</p> <pre><code>class Example(object): def __init__(self, parent): ... self._dragging = False ... self.canvas.bind("&lt;ButtonPress-1&gt;", self.on_click) self.canvas.bind("&lt;B1-Motion&gt;", self.on_move) self.canvas.bind("&lt;ButtonRelease-1&gt;", self.on_release) def on_click(self, event): self._dragging = True self.on_move(event) def on_move(self, event): if self._dragging: items = self.canvas.find_closest(event.x, event.y) if items: rect_id = items[0] self.canvas.itemconfigure(rect_id, fill="red") def on_release(self, event): self._dragging = False </code></pre>