Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

In Python Turtle, call turtle.circle(radius) to draw a full circle, add an extent to draw an arc, and wrap a shape in begin_fill() and end_fill() to fill it. The examples below target Python 3.12 or later and use only the standard library.

How do I draw a circle in Python Turtle?

The circle() method takes a radius, an optional extent, and an optional step count:

turtle.circle(radius, extent=None, steps=None)

With extent omitted, Turtle draws a complete circle. The circle’s center lies radius units to the turtle’s left. A positive radius traces counterclockwise; a negative radius traces clockwise. Turtle approximates circles using an inscribed regular polygon, and steps sets the number of steps in that approximation.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Here is a complete example. The turtle begins at the origin, facing east, and draws a circle with a radius of 80 Turtle units:

import turtle

turtle.circle(80)
turtle.done()

The window remains open until you close it. The Python documentation describes Turtle as a visual way to introduce programming; it is included in Python’s standard library, so no separate package installation is needed. See the official Turtle documentation.

How do I draw an arc with turtle.circle()?

Pass an angle in degrees as extent. Turtle draws that portion of the circle, and its final heading changes by the extent amount. Positive and negative extents therefore turn the turtle in opposite directions. Radius sign independently determines which side of the turtle the circle’s center is on and the direction the arc is traced.

This example draws two differently directed arcs from a known position and heading. It uses the default coordinate mode and begins each arc with the turtle facing east:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import turtle

screen = turtle.Screen()
turtle.speed(3)
turtle.penup()
turtle.goto(-140, 0)
turtle.setheading(0)
turtle.pendown()
turtle.circle(80, extent=120)

turtle.penup()
turtle.goto(40, 0)
turtle.setheading(0)
turtle.pendown()
turtle.circle(-80, extent=120)

turtle.done()

The first arc uses a positive radius and traces counterclockwise; the second uses a negative radius and traces clockwise. Both use a positive 120-degree extent. The two circles’ centers are on opposite sides of their respective starting points.

Use steps when you want a specified number of straight segments rather than a smoother-looking circle. For example, this draws a regular hexagon because it approximates a full circle with six steps:

import turtle

turtle.circle(80, steps=6)
turtle.done()

For exact parameter behavior, consult Python’s circle() reference.

How do I fill a shape in Turtle?

Set the fill color, call begin_fill() immediately before drawing the shape, and call end_fill() after the drawing is complete. The outline remains the pen color; fillcolor() changes only the fill. Alternatively, color(outline, fill) sets both.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import turtle

turtle.fillcolor("gold")
turtle.begin_fill()
turtle.circle(80)
turtle.end_fill()
turtle.done()

Always pair the start and end calls: Python’s 3.12 documentation says a fill process must be completed with end_fill(). This explicit form is the broadly compatible choice. Python 3.14 also supports a context manager that brackets the same operation:

import turtle

with turtle.fill():
    turtle.fillcolor("gold")
    turtle.circle(80)

turtle.done()

The with turtle.fill(): form is specific to Python 3.14’s documented API; use the explicit calls if your Python version does not support it. See the documentation for Python 3.12 fill methods and Python 3.14’s fill context manager.

For ordinary closed shapes, the fill sequence is straightforward. Filled self-intersecting paths or overlapping shapes can render differently depending on the operating system’s graphics behavior and the overlap pattern, so do not assume complex overlaps will look identical everywhere.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How do I draw and record a polygon in Python Turtle?

Draw a polygon as a path

To draw a polygon, combine straight movements with turns. To fill it, put the entire drawing sequence between begin_fill() and end_fill(). This example draws and fills a triangle:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import turtle

turtle.fillcolor("skyblue")
turtle.begin_fill()
for _ in range(3):
    turtle.forward(120)
    turtle.left(120)
turtle.end_fill()
turtle.done()

Record the vertices as a polygon object

Use begin_poly(), end_poly(), and get_poly() when you need to capture the polygon vertices traced by turtle movement, rather than simply draw a filled path. Recording starts at the turtle’s current position, and the last point is connected to the first.

import turtle

turtle.begin_poly()
for _ in range(3):
    turtle.forward(120)
    turtle.left(120)
turtle.end_poly()
triangle = turtle.get_poly()
print(triangle)
turtle.done()

These recording methods capture geometry; they do not replace the fill sequence for displaying a filled polygon. See the polygon recording API reference.

Quick troubleshooting

  • The circle appears to go the wrong way: check whether the radius is negative; negative radius reverses the tracing direction.
  • The arc ends facing a different direction: the turtle’s heading changes by the extent, so set its heading again before drawing another independent arc.
  • The shape has an outline but no fill: set a fill color, call begin_fill() before drawing, and ensure the sequence reaches end_fill().
  • A polygon looks like an open path: close its drawing sequence by returning to its starting point, or use the polygon recording API, which connects the last point to the first.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.