On click functions with turtle?

baujacob at gmail.com baujacob at gmail.com
Sun Oct 20 16:37:39 EDT 2013


Hi everyone, I have this program that writes out the name "John" in block letters. I was just messing around because we were just introduced to turtle a few weeks ago in class and I'm just getting the hang of it. Before I was using "goto" a certain angle, but now I'm using "seth" and it's so much easier. 

Here is my question:

I want to click on a certain letter ("J" or "O" or "H" or "N") and have the turtle hover above that letter as in when the turtle is above the letter "N" at the end of my program. Do I need to set the letters up as objects so when I click inside them, I can set the turtles x and y coordinate to hover above that letter?

Or do I need to define each letter as a function and make some "if" statements like "if user clicks inside letter (J,O,H, or N), go to specific x, y coordinate?"

Thanks for any help in advance. Drawing is frustrating with python, but I'm starting to understand how it works. I think it's just the angles that trip me up.

Here is my code:

import turtle
rectangle = turtle.Turtle()

def makeRec():
    rectangle.shape("turtle")
    rectangle.pensize(2)
    rectangle.pencolor("red")
    rectangle.speed(5)

    #Draws the letter O
    rectangle.penup()
    rectangle.seth(180)
    rectangle.fd(50)
    rectangle.seth(90)
    rectangle.pendown()
    rectangle.pencolor("black")
    rectangle.circle(30)
    rectangle.penup()
    rectangle.seth(180)
    rectangle.fd(10)
    rectangle.seth(90)
    rectangle.pendown()
    rectangle.circle(20)

    rectangle.penup()
    rectangle.seth(180)
    rectangle.fd(70)
    rectangle.seth(90)
    rectangle.fd(30)
    rectangle.seth(-90)

    #Draws the letter J
    rectangle.pendown()
    rectangle.fd(40)
    rectangle.circle(-20,180)
    rectangle.seth(0)
    rectangle.fd(10)
    rectangle.seth(-90)
    rectangle.circle(10,180)
    rectangle.fd(40)
    rectangle.seth(0)
    rectangle.fd(10)

    #Draws the letter H
    rectangle.penup()
    rectangle.fd(100)
    rectangle.seth(-90)
    rectangle.pendown()
    rectangle.fd(60)
    rectangle.seth(0)
    rectangle.fd(10)
    rectangle.seth(90)
    rectangle.fd(20)
    rectangle.seth(0)
    rectangle.fd(20)
    rectangle.seth(-90)
    rectangle.fd(20)
    rectangle.seth(0)
    rectangle.fd(10)
    rectangle.seth(90)
    rectangle.fd(60)
    rectangle.seth(180)
    rectangle.fd(10)
    rectangle.seth(-90)
    rectangle.fd(30)
    rectangle.seth(180)
    rectangle.fd(20)
    rectangle.seth(90)
    rectangle.fd(30)
    rectangle.seth(180)
    rectangle.fd(10)

    #Draws the letter N
    rectangle.penup()
    rectangle.seth(0)
    rectangle.fd(60)
    rectangle.seth(-90)
    rectangle.fd(60)
    rectangle.seth(90)
    rectangle.pendown()
    rectangle.fd(60)
    rectangle.seth(0)
    rectangle.fd(10)
    rectangle.seth(-60)
    rectangle.fd(50)
    rectangle.seth(90)
    rectangle.fd(45)
    rectangle.seth(0)
    rectangle.fd(13)
    rectangle.seth(-90)
    rectangle.fd(65)
    rectangle.seth(180)
    rectangle.fd(15)
    rectangle.seth(120)
    rectangle.fd(40)
    rectangle.seth(-90)
    rectangle.fd(35)
    rectangle.seth(180)
    rectangle.fd(13)
    rectangle.seth(90)
    rectangle.fd(5)

    #Sets the turtle to the position above letter N
    rectangle.penup()
    rectangle.seth(90)
    rectangle.fd(100)
    rectangle.seth(180)
    rectangle.fd(80)
    rectangle.seth(-90)
    print(rectangle.pos())
    rectangle.setx(54)
    rectangle.sety(70)
makeRec()



More information about the Python-list mailing list