How to Create custom Turtle shapes in Python? (original) (raw)

Last Updated : 10 Apr, 2023

In Turtle, by default, we have an arrowhead-shaped cursor for drawing on the canvas. This can be changed to some other predefined shape or we can also create a custom shape and register it under a name. Not just that, we can even use gif format images to replace our cursor.

Changing cursor to predefined shapes

The shape() function is used to set the shape of the cursor. The pre-defined shapes include turtle, arrow, circle, square and triangle.

Python3 `

import turtle

turtle object

c_turtle = turtle.Turtle()

changing the cursor

shape to circle

c_turtle.shape('circle')

`

Registering new shapes

The turtle module has register_shape() function for registering custom shapes.

Syntax : turtle.register_shape(name, shape)
Parameters :

The n-tuple argument for the shape parameter, denotes the relative position of each corner of an n-sided polygon. Let us try to create a simple diamond shape to understand this.
Consider this diamond, having length of diagonal = 20, in a Cartesian plane :

To create this shape, we need to pass these coordinates in clockwise order.

Python3 `

import turtle

turtle object

diamond_turtle = turtle.Turtle()

the coordinates of each corner

shape = ((0, 0), (10, 10), (20, 0), (10, -10))

registering the new shape

turtle.register_shape('diamond', shape)

changing the shape to 'diamond'

diamond_turtle.shape('diamond')

Keep the turtle window open

turtle.done()

`

Output:

Using images for Turtle cursor

To use an image as the cursor, we need to pass the image file path as parameter to register_shape(). Note that this image has to be in gif format.

Python3 `

import turtle

turtle object

img_turtle = turtle.Turtle()

registering the image

as a new shape

turtle.register_shape('example.gif')

setting the image as cursor

img_turtle.shape('example.gif')

`