@@ -0,0 +1,2084 @@
+#!/usr/bin/env python3%0A# -*- coding: utf-8 -*-%0A%0A# Copyright (c) 2016 J%C3%A9r%C3%A9mie DECOCK (http://www.jdhp.org)%0A%0A# Permission is hereby granted, free of charge, to any person obtaining a copy%0A# of this software and associated documentation files (the %22Software%22), to deal%0A# in the Software without restriction, including without limitation the rights%0A# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell%0A# copies of the Software, and to permit persons to whom the Software is%0A# furnished to do so, subject to the following conditions:%0A%0A# The above copyright notice and this permission notice shall be included in%0A# all copies or substantial portions of the Software.%0A %0A# THE SOFTWARE IS PROVIDED %22AS IS%22, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR%0A# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,%0A# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE%0A# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER%0A# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,%0A# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN%0A# THE SOFTWARE.%0A%0A# See http://fr.slideshare.net/r1chardj0n3s/tkinter-does-not-suck (slides 83)%0A%0Aimport tkinter as tk%0A%0Aroot = tk.Tk()%0A%0Acanvas = tk.Canvas(root, width=300, height=300, bg=%22white%22)%0Acanvas.pack(fill=%22both%22, expand=True)%0A%0ALAST_X = None%0ALAST_Y = None%0A%0Adef callback(event):%0A    print(%22Clicked at:%22, event.x, event.y)%0A%0A    global LAST_X%0A    global LAST_Y%0A%0A    if (LAST_X is not None) and (LAST_Y is not None):%0A        canvas.create_line(LAST_X,%0A                           LAST_Y,%0A                           event.x,%0A                           event.y)%0A%0A    LAST_X = event.x%0A    LAST_Y = event.y%0A%0A# Available mouse events:%0A# - Mouse button: %3CButton-1%3E, %3CButton-2%3E, %3CButton-3%3E%0A# - Mouse drag: %3CB1-Motion%3E%0A# - Mouse release: %3CButtonRelease-1%3E, ...%0A# - Double click: %3CDouble-Button-1%3E, ...%0A# - Trible click: %3CTriple-Button-1%3E, ...%0A# - Mouse entered: %3CEnter%3E%0A# - Mouse left: %3CLeave%3E%0Acanvas.bind(%22%3CButton-1%3E%22, callback)%0A%0Aroot.mainloop()%0A

Add a snippet.