En esta lección se trata la creación de gráficos usando el módulo turtle. Se recomienda leer previamente la lección turtle (1).
La función setworldcoordinates(x1, y1, x2, y2) permite modificar las coordenadas de la ventana, definiendo las coordenadas de la esquina inferior izquierda (x1, y1) y de la esquina superior derecha (x2, y2).
El interés de esta función es poder desplazar el origen del centro de coordenadas y cambiar la escala:
from turtle import *
setup(450, 200, 0, 0)
title("www.mclibre.org")
hideturtle()
goto(150, 150)
exitonclick()
Teóricamente las coordenadas deben ajustarse al tamaño de la ventana, pero si se hace así, las proporciones cambian ligeramente, lo que deforma las figuras. Como se observa en la captura siguiente, la línea ya no es exactamente diagonal, sino que está ligeramente inclinada:
from turtle import *
setup(450, 200, 0, 0)
title("www.mclibre.org")
hideturtle()
setworldcoordinates(0, 0, 449, 199)
goto(150, 150)
exitonclick()
from turtle import *
setup(450, 200, 0, 0)
title("www.mclibre.org")
hideturtle()
setworldcoordinates(0, 0, 449, 188)
goto(150, 150)
exitonclick()
Nota: No he sido capaz de encontrar una regla sencilla para elegir los valores que creen proporciones correctas. parece que hay que encontrarlas probando.
La función write(texto, desplazarTortuga, alineación, fuente) permite escribir texto en el espacio de dibujo. Los cuatro argumentos de la función son:
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba")
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba", False)
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba", True)
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba", False, "left")
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba", False, "center")
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba", False, "right")
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es una prueba", False,
"right", ("arial", 20, "bold italic"))
exitonclick()
Se pueden omitir los últimos argumentos, pero no los anteriores. Por ejemplo, podemos omitir el tipo de letra (el cuarto argumento), pero si queremos especificar el tipo de letra, debemos indicar los tres argumentos anteriores.
El desplazamiento del cursor se puede utilizar para que el texto de varias instrucciones aparezca seguido en la pantalla:
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es ")
write("una prueba")
exitonclick()
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
goto(50,10)
write("Esto es ", True)
write("una prueba")
exitonclick()
Para pedir datos al usuario en un programa que dibuja gráficos de tortuga se pueden utilizar la función input(). El inconveniente es que esta función solicita los datos en la ventana principal de IDLE, por lo que hay que estar cambiando el foco de una ventana a otra.
En vez de la función input(), se pueden utilizar las funciones textinput() y numinput() de la biblioteca turtle.
La función textinput(título, mensaje) solicita una cadena al usuario en una ventana emergente. Los dos argumentos de la función son:
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
nombre = textinput("Nombre", "¿Cuál es su nombre?")
exitonclick()
La función numinput(título, mensaje, valorPredeterminado, valorMínimo, valorMáximo) solicita un número al usuario en una ventana emergente. Los dos argumentos de la función son:
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
edad = numinput("Edad", "¿Cuál es su edad?", 20, 0, 120)
exitonclick()
Si se escribe un valor numérico menor que valorMínimo o mayor que valorMáximo, se muestra un aviso:
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
edad = numinput("Edad", "¿Cuál es su edad?", 20, 0, 120)
exitonclick()
Si se escribe un valor no numérico, se muestra un aviso:
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
edad = numinput("Edad", "¿Cuál es su edad?", 20, 0, 120)
exitonclick()
La función numinput() recoge los números como decimales. Si queremos recoger valores enteros, debemos utilizar la función int():
from turtle import *
setup(450, 150, 0, 0)
screensize(300, 150)
title("www.mclibre.org")
hideturtle()
edad = int(numinput("Edad", "¿Cuál es su edad?", 20, 0, 120))
write(f"Su edad es {edad}")
exitonclick()