Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesiTechGuides 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.
Here is a complete example. The turtle begins at the origin, facing east, and draws a circle with a radius of 80 Turtle units:
#1 Best Overall
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.
Rank #2
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:
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.
Rank #3
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.
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.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:
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 Recap
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 reachesend_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.

