from turtle import Screen, Turtle
import math
start_side = 150

def hexagon(side_len, shrink_factor, ang):
    turtle.pd()
    if side_len < 1:
        return
    for i in range(6):
        turtle.fd(side_len)
        turtle.lt(60)
    turtle.fd(side_len)
    turtle.rt(ang)
    hexagon(side_len * shrink_factor, shrink_factor, ang)
    turtle.lt(ang)
    turtle.bk(side_len)
    turtle.pu()

def motion(event):
    canvas.unbind("<Motion>")
    x = event.x
    y = event.y
    turtle.clear()
    for i in range(6):
        hexagon(start_side * y/600, y/600, x/5)
        turtle.fd(start_side * y/600)
        turtle.lt(60)
    screen.update()
    canvas.bind("<Motion>", motion)

screen = Screen()
screen.setup(600, 600)
screen.tracer(0,0)
turtle = Turtle(visible=False)
turtle.speed('fastest')
turtle.pensize(2)
turtle.pu()
canvas = screen.getcanvas()
canvas.bind("<Motion>", motion)
screen.mainloop()






