Recently, I was working on a Python project with my students where I needed to demonstrate basic graphics programming. Python’s Turtle module is perfect for this; it’s simple, visual, and great for beginners. In this article, I will show you multiple ways to draw a square using Python’s Turtle module.
Let me walk you through different approaches to creating squares with Turtle, from basic implementations to more advanced techniques. So let’s get in!
Methods to Create a Python Turtle Square
Now, I will explain to you the methods for creating a Python turtle square.
1 – Basic Square Using Turtle
The simplest way to draw a square is by using the forward and left/right commands in a loop. This is ideal for beginners just starting with Python graphics.
import turtle
# Setup the turtle
t = turtle.Turtle()
t.speed(1) # Slow speed to see the drawing process
# Draw a square
for i in range(4):
t.forward(100) # Move forward 100 pixels
t.left(90) # Turn left 90 degrees
# Keep the window open
turtle.exitonclick()I executed the above example code and added the screenshot below.

This code creates a simple square with sides of 100 pixels. It’s straightforward and shows the fundamental concept of how Turtle works – move and turn, move and turn.
2 – Create a Square Function
If you plan to draw multiple squares or reuse your code, creating a function is the way to go. This makes your code more organized and reusable.
import turtle
def draw_square(t, size):
"""Function to draw a square of given size"""
for i in range(4):
t.forward(size)
t.left(90)
# Setup
screen = turtle.Screen()
screen.title("Python Turtle Square")
t = turtle.Turtle()
t.speed(3)
# Draw squares of different sizes
draw_square(t, 50)
t.penup()
t.goto(100, 0) # Move to a new position
t.pendown()
draw_square(t, 100)
# Keep the window open
screen.exitonclick()I executed the above example code and added the screenshot below.

With this approach, you can easily create squares of different sizes without repeating code. It’s a great practice for teaching code reusability.
Check out Python Turtle Polygon
3 – Customize Your Square
One of the great things about Turtle is how easily you can customize your graphics. Let’s add some color and style to our square.
import turtle
# Setup
screen = turtle.Screen()
screen.bgcolor("lightblue") # Set background color
t = turtle.Turtle()
t.speed(2)
# Customize the turtle
t.pensize(5) # Thicker line
t.pencolor("navy") # Blue pen color
t.fillcolor("coral") # Fill color
# Draw a filled square
t.begin_fill()
for i in range(4):
t.forward(150)
t.left(90)
t.end_fill()
# Add a signature
t.penup()
t.goto(-140, -120)
t.pendown()
t.write("My First Turtle Square", font=("Arial", 12, "normal"))
# Keep the window open
screen.exitonclick()I executed the above example code and added the screenshot below.

This method shows how to add colors, change line thickness, and even add text to your Turtle graphics. These customizations make your square more visually appealing and demonstrate additional Turtle features.
Read Python Turtle Window
4 – Draw Multiple Squares (Nested Squares)
Let’s take it a step further and draw nested squares – a common pattern that looks impressive but is quite simple to implement.
import turtle
# Setup
screen = turtle.Screen()
t = turtle.Turtle()
t.speed(0) # Fastest speed
# Define colors for our squares
colors = ["red", "purple", "blue", "green", "orange", "yellow"]
# Starting size
size = 20
# Number of squares to draw
count = 30
# Move turtle to starting position
t.penup()
t.goto(-30, -30)
t.pendown()
# Draw increasingly larger squares
for i in range(count):
# Select color
t.pencolor(colors[i % 6])
t.fillcolor(colors[i % 6])
# Draw filled square
t.begin_fill()
for j in range(4):
t.forward(size)
t.left(90)
t.end_fill()
# Prepare for next square
size += 10
t.penup()
t.goto(-30 - i*5, -30 - i*5)
t.pendown()
# Hide the turtle when done
t.hideturtle()
# Keep the window open
screen.exitonclick()This method creates a beautiful pattern of nested squares with different colors. It’s a great example of combining loops and color manipulation in Turtle graphics.
5 – Use the Square Spiral Technique
One interesting variation is to create a square spiral. Instead of closing each square, we continuously increase the line length to create a spiral effect.
import turtle
# Setup
screen = turtle.Screen()
t = turtle.Turtle()
t.speed(0) # Fastest speed
# Change the shape of the turtle
t.shape("turtle")
# Set colors
t.pencolor("purple")
screen.bgcolor("black")
# Create a square spiral
size = 10
for i in range(100):
t.forward(size)
t.right(90)
size += 5
# Keep the window open
screen.exitonclick()This technique creates a mesmerizing spiral pattern by gradually increasing the distance the turtle travels before turning. It’s a simple modification that creates a completely different visual effect.
Check out Python Turtle Random
6 – Object-Oriented Approach with Classes
For more advanced Python programmers, using a class-based approach provides better organization and extensibility:
import turtle
class TurtleSquare:
def __init__(self, size=100, color="blue"):
self.screen = turtle.Screen()
self.t = turtle.Turtle()
self.size = size
self.color = color
self.setup_turtle()
def setup_turtle(self):
"""Configure initial turtle settings"""
self.t.speed(3)
self.t.pencolor(self.color)
def draw(self, x=0, y=0):
"""Draw a square at specified position"""
self.t.penup()
self.t.goto(x, y)
self.t.pendown()
for i in range(4):
self.t.forward(self.size)
self.t.left(90)
def run(self):
"""Keep the window open until clicked"""
self.screen.exitonclick()
# Create and use our class
if __name__ == "__main__":
square = TurtleSquare(size=150, color="red")
square.draw(-75, -75) # Center the square
square.run()This object-oriented approach encapsulates all the functionality related to drawing squares into a class. It makes your code more maintainable and easier to extend with additional features.
Python’s Turtle module is a fantastic way to learn programming concepts while creating visual output. Whether you’re teaching children their first programming steps or exploring graphics programming yourself, the techniques for drawing squares shown here provide a solid foundation.
From simple loops to more complex patterns and object-oriented designs, these methods demonstrate the flexibility of Turtle graphics. You can combine these techniques or modify them to create your unique patterns and designs.
You may like to read:

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.