#import tkinter
#tkinter.Tk()
from tkinter import *
#Tk()

import sys

root = Tk() # создали окно
R = 10
p = []
history = []

def f_redraw():
	w.delete(ALL)
	for i in range(len(p)):
		j = (i + 1) % len(p)
		w.create_line(p[i][0], p[i][1], p[j][0], p[j][1], fill="red")
	# enumerate([x, y, z]) = [(0, x), (1, y), (2, z)]
	for i, (x, y) in enumerate(p):
		w.create_oval(x - R, y - R, x + R, y + R, 
			fill="green", outline="#00aa00")
		w.create_text(x, y, fill="white", 
			text=str(i+1), justify=CENTER, font="Courier 10 bold")
	
def f_key(event):
	c = repr(event.char)
	print("pressed key {0} {1}".format(c, event.char))
	if event.char == 'q':
		sys.exit(0)

def dist(a, b):
	return (a[0]-b[0])**2 + (a[1]-b[1])**2
def f_delete(event):
	print("clicked-2 at", event.x, event.y)
	global p
	if len(p) == 0:
		return
	pos = (event.x, event.y)
	i = 0
	for j in range(len(p)):
		if dist(pos, p[j]) < dist(pos, p[i]):
			i = j
	history.append(list(p))
	p = p[:i] + p[i+1:]
	f_redraw()

def f_cancel(event):
	global p, history
	print("cancel: len(history) = %d" % len(history))
	if len(history) > 0:
		p = history[-1]
		history = history[:-1]
	f_redraw()

def f_button(event):
	print("clicked-1 at", event.x, event.y)
	global R, history, p
	w.focus_set()
	history.append(list(p))
	p.append((event.x, event.y))
	f_redraw()

w = Canvas(root, width=400, height=400)
w.focus_set() # установили фокус
w.bind("<Key>", f_key)
w.bind("<Control-z>", f_cancel)
w.bind("<Control-Z>", f_cancel)
w.bind("<Button-1>", f_button)
w.bind("<Button-3>", f_delete)
w.pack()

root.mainloop()