Dibujar con Turtle en Python: guía completa

Actualizado el: 11/07/2026
Tempo de leitura: 4 minutos
Desenhos para iniciantes usando Turtle em Python

Dibujar con Turtle en Python convierte instrucciones de programación en movimientos visibles. En lugar de limitarte a mostrar resultados en la terminal, controlas un cursor que avanza, gira y deja líneas sobre una ventana. Esa respuesta inmediata hace que Turtle sea una herramienta excelente para practicar bucles, funciones, coordenadas, colores y eventos del teclado.

En esta guía crearás una ventana, moverás la tortuga, dibujarás figuras geométricas, rellenarás formas, repetirás patrones y construirás un pequeño artista interactivo. Turtle forma parte de la biblioteca estándar de Python, por lo que normalmente no necesitas instalar un paquete adicional.

Qué es Turtle

Turtle es un módulo gráfico basado en un cursor móvil. Puedes indicarle que avance, retroceda, gire, levante el lápiz, cambie de color o dibuje círculos. Python ofrece una interfaz sencilla por funciones y otra orientada a objetos. Utilizaremos objetos porque permiten trabajar con varias tortugas y organizar mejor proyectos grandes.

La documentación oficial de Turtle describe todos sus métodos. El módulo utiliza Tk, así que necesita un entorno gráfico. En algunos sistemas Linux puede ser necesario instalar el paquete de Tk por separado.

Crear la primera ventana

import turtle

pantalla = turtle.Screen()
pantalla.title("Mi primer dibujo con Turtle")
pantalla.bgcolor("white")
pantalla.setup(width=800, height=600)

artista = turtle.Turtle()
artista.shape("turtle")
artista.color("royalblue")
artista.pensize(3)

artista.forward(150)
artista.left(90)
artista.forward(100)

pantalla.mainloop()

mainloop() mantiene activa la ventana. Sin esa llamada, el programa puede terminar y cerrar la interfaz inmediatamente.

Movimiento y rotación

  • forward(distancia): avanza en la dirección actual.
  • backward(distancia): retrocede.
  • left(angulo): gira en sentido antihorario.
  • right(angulo): gira en sentido horario.
  • goto(x, y): se mueve hasta una coordenada.
  • setheading(angulo): establece una dirección absoluta.

Los ángulos se expresan en grados. El valor 0 apunta hacia la derecha, 90 hacia arriba, 180 hacia la izquierda y 270 hacia abajo.

artista.goto(-200, -100)
artista.setheading(45)
artista.forward(140)

Dibujar un cuadrado con un bucle

for _ in range(4):
    artista.forward(120)
    artista.right(90)

El guion bajo indica que el contador no se utiliza. El bucle elimina repeticiones y muestra claramente la relación entre la forma y sus cuatro lados.

Crear una función para polígonos

def dibujar_poligono(tortuga, lados, longitud):
    if lados < 3:
        raise ValueError("Un polígono necesita al menos tres lados")

    angulo = 360 / lados

    for _ in range(lados):
        tortuga.forward(longitud)
        tortuga.right(angulo)


dibujar_poligono(artista, lados=6, longitud=80)

La función puede dibujar triángulos, cuadrados, pentágonos y otras figuras sin duplicar la lógica.

Levantar y bajar el lápiz

Usa penup() para cambiar de posición sin dibujar y pendown() para volver a trazar líneas.

artista.penup()
artista.goto(-250, 150)
artista.pendown()
artista.circle(60)

Otros métodos útiles son pensize(), pencolor(), speed(), hideturtle() y showturtle().

Colores y figuras rellenas

artista.pencolor("darkgreen")
artista.fillcolor("lightgreen")
artista.begin_fill()

for _ in range(3):
    artista.forward(140)
    artista.left(120)

artista.end_fill()

También puedes configurar colores RGB:

pantalla.colormode(255)
artista.color((40, 90, 180), (180, 220, 255))

Círculos, puntos y arcos

artista.circle(80)
artista.circle(100, extent=180)
artista.dot(25, "tomato")

Un radio negativo dibuja en la dirección opuesta. El argumento extent limita el círculo a un arco.

Crear arte geométrico

artista.speed(0)
colores = ["#2563eb", "#7c3aed", "#db2777", "#ea580c"]

for indice in range(72):
    artista.pencolor(colores[indice % len(colores)])
    artista.circle(100)
    artista.left(5)

El operador módulo recorre la lista de colores de forma repetida.

Acelerar dibujos grandes

Cuando el patrón contiene cientos de líneas, puedes desactivar la actualización automática y refrescar la pantalla al final.

pantalla.tracer(0)

for angulo in range(0, 360, 3):
    artista.setheading(angulo)
    artista.forward(180)
    artista.backward(180)

pantalla.update()

Controlar la tortuga con el teclado

DISTANCIA = 20
GIRO = 15


def avanzar():
    artista.forward(DISTANCIA)


def retroceder():
    artista.backward(DISTANCIA)


def girar_izquierda():
    artista.left(GIRO)


def girar_derecha():
    artista.right(GIRO)


pantalla.listen()
pantalla.onkeypress(avanzar, "Up")
pantalla.onkeypress(retroceder, "Down")
pantalla.onkeypress(girar_izquierda, "Left")
pantalla.onkeypress(girar_derecha, "Right")

Las funciones se pasan sin paréntesis porque Turtle debe ejecutarlas después, cuando ocurra el evento.

Responder a clics del ratón

def mover_al_clic(x, y):
    artista.goto(x, y)


pantalla.onclick(mover_al_clic)

La función recibe las coordenadas del clic. Este tipo de programación orientada a eventos también aparece en juegos.

Trabajar con varias tortugas

azul = turtle.Turtle()
roja = turtle.Turtle()

azul.color("blue")
roja.color("red")

azul.goto(-150, 0)
roja.goto(150, 0)

azul.circle(70)
roja.circle(-70)

Cada objeto mantiene su propia posición, orientación y apariencia.

Proyecto completo: artista interactivo

import random
import turtle

COLORES = ["#2563eb", "#7c3aed", "#db2777", "#059669", "#ea580c"]

pantalla = turtle.Screen()
pantalla.title("Artista interactivo")
pantalla.setup(900, 650)
pantalla.bgcolor("#f8fafc")

artista = turtle.Turtle()
artista.shape("turtle")
artista.speed(0)
artista.pensize(3)
artista.color(COLORES[0])


def avanzar():
    artista.forward(25)


def retroceder():
    artista.backward(25)


def izquierda():
    artista.left(15)


def derecha():
    artista.right(15)


def alternar_lapiz():
    if artista.isdown():
        artista.penup()
    else:
        artista.pendown()


def cambiar_color():
    artista.pencolor(random.choice(COLORES))


def limpiar():
    artista.clear()
    artista.penup()
    artista.home()
    artista.pendown()


def espiral():
    for paso in range(5, 205, 5):
        artista.pencolor(COLORES[(paso // 5) % len(COLORES)])
        artista.forward(paso)
        artista.right(91)


pantalla.listen()
pantalla.onkeypress(avanzar, "Up")
pantalla.onkeypress(retroceder, "Down")
pantalla.onkeypress(izquierda, "Left")
pantalla.onkeypress(derecha, "Right")
pantalla.onkeypress(alternar_lapiz, "space")
pantalla.onkeypress(cambiar_color, "c")
pantalla.onkeypress(limpiar, "x")
pantalla.onkeypress(espiral, "s")
pantalla.onclick(artista.goto)

pantalla.mainloop()

Usa las flechas para mover la tortuga, Espacio para levantar o bajar el lápiz, C para cambiar el color, X para limpiar y S para dibujar una espiral.

Problemas frecuentes

  • La ventana se cierra: termina con mainloop() o turtle.done().
  • Las teclas no responden: llama a listen() y enfoca la ventana.
  • El dibujo es lento: usa speed(0) o tracer(0).
  • No se abre la ventana: comprueba que Python tenga soporte para Tk.
  • La tortuga dibuja al cambiar de sitio: usa penup() y pendown().

Ideas para continuar

  • Crear una caminata aleatoria.
  • Dibujar un reloj o una cuadrícula.
  • Construir una carrera de tortugas.
  • Crear un laberinto controlado por teclado.
  • Dibujar árboles fractales con recursión.
  • Añadir puntuación y colisiones para crear un juego.

Conclusión

Turtle hace visibles conceptos que al principio parecen abstractos. El movimiento introduce coordenadas, los polígonos practican bucles, las figuras reutilizables enseñan funciones y los controles de teclado presentan la programación por eventos.

Comienza con una figura sencilla y cambia distancias, ángulos, colores y repeticiones. Intentar predecir el resultado antes de ejecutar el programa es una excelente forma de aprender.

Lecturas relacionadas

Documentación gráfica

Como complemento a la referencia de Turtle, consulta la documentación oficial de Tkinter en Python, la biblioteca gráfica sobre la que se apoya la ventana utilizada por el módulo.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Criptografia e segurança de dados em Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear un generador de contraseñas seguro en Python

    Crea un generador de contraseñas seguro en Python con secrets, reglas configurables, CLI, validación, passphrases y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Jogo da forca para iniciantes desenvolvido com Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear un juego del ahorcado en Python

    Crea un juego del ahorcado en Python con palabras aleatorias, validación, letras repetidas, vidas, dibujos ASCII, pistas y opción de

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Quiz interativo no terminal desenvolvido com Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear un quiz en Python para la terminal

    Crea un quiz en Python para la terminal con preguntas, validación, puntuación, respuestas mezcladas, repetición, JSON y pruebas.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Jogo de adivinhação de números desenvolvido com Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Juego de adivinar números en Python

    Crea un juego de adivinar números en Python con niveles, pistas, intentos limitados, validación, repetición y funciones fáciles de probar.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026