Turtle: dibuja formas y gráficos con Python

Actualizado el: 20/08/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

    Búsqueda en PDF con Python y RAG
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Guía PDF con Python y RAG

    Aprende a consultar PDF con Python y RAG, recuperación semántica, evaluación y seguridad.

    Ler mais

    Tempo de leitura: 7 minutos
    23/07/2026
    Integração do ChatGPT com código Python em projeto prático
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    OpenAI API con Python: integración y seguridad

    Integra la API de OpenAI con Python usando Responses API, variables de entorno, validación, reintentos, control de costes, pruebas y

    Ler mais

    Tempo de leitura: 5 minutos
    12/07/2026
    Calendário mensal gerado automaticamente com Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Calendario mensual en Python con calendar

    Genera un calendario mensual con Python usando calendar y datetime, valida fechas, añade eventos y exporta a TXT, HTML o

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Projeto de jogo da velha desenvolvido em Python como exercício de lógica de programação
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Tres en raya con Python: lógica y validación

    Crea un juego de tres en raya con Python usando listas, funciones, validación, detección de victoria, marcador, pruebas y una

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    texto Tkinter com uma interface gráfica dele ao lado
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Tkinter en Python: crea una app de escritorio

    Crea tu primera aplicación con Tkinter: ventanas, ttk, formularios, grid, eventos, archivos, threads, estilos y separación de lógica.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Sistema de lembretes e alarmes desenvolvido com Python
    Proyectos
    Foto de perfil de Leandro Hirt da Academify

    Recordatorios con alarma en Python: datetime y sonido

    Crea recordatorios con alarma en Python usando datetime, JSON, threads, zonas horarias, sonidos, recurrencia y pruebas controladas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026