Use turtle.circle(radius) to draw a full circle, add an extent to draw an arc, and wrap a drawing in begin_fill() and end_fill() to color its interior. The examples below target Python 3.12 and use only the standard-library turtle module. Python 3.14’s newer fill context manager is shown separately.
How do I draw a circle in Python Turtle?
Save this as a Python file and run it in an environment that can open Turtle’s graphics window:
As an Amazon Associate I earn from qualifying purchases.
import turtle
t = turtle.Turtle()
t.circle(80)
turtle.done()
The argument 80 is the radius in Turtle units. With no extent argument, circle() draws the entire circle. Turtle places its center to the turtle’s left by the specified radius; it traces the circle from the turtle’s current position and heading. The official Python reference documents this behavior in its Python 3.12 description of circle().
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchTurtle approximates circles with an inscribed regular polygon. The optional steps argument sets the number of steps in that approximation; it can also be used to draw a regular polygon, as in t.circle(80, steps=6) for a six-sided figure. The result is a sequence of straight segments, not a mathematically perfect curve.
#1 Best Overall
How do I draw an arc with turtle.circle()?
Pass an extent in degrees to draw part of a circle. A positive radius traces counterclockwise; a negative radius traces clockwise. The turtle’s heading changes by the extent amount, so successive arcs begin in the direction left by the previous command.
import turtle
t = turtle.Turtle()
turtle.mode("standard")
t.setheading(0)
t.circle(80, extent=90) # quarter-circle arc
t.penup()
t.goto(140, 0)
t.setheading(0)
t.pendown()
t.circle(-80, extent=90) # arc traced in the opposite direction
turtle.done()
In standard mode, heading 0 points right. The first arc uses a positive radius; the second starts at a new known position and uses a negative radius so the direction difference is easy to see. Changing the extent changes both how much of the circle is drawn and the turtle’s final heading.
Rank #2
How do I fill a shape in Turtle?
Set a fill color, call begin_fill() immediately before tracing the shape, and call end_fill() when the outline is complete. For example, this draws a filled circle:
import turtle
t = turtle.Turtle()
t.fillcolor("gold")
t.begin_fill()
t.circle(80)
t.end_fill()
turtle.done()
You can also set outline and fill colors together with t.color(outline, fill); t.fillcolor(fill) changes the fill color alone. The Python 3.12 reference says to complete each fill process with end_fill(), which fills the shape drawn since the preceding begin_fill(). See the begin_fill() and end_fill() documentation.
Rank #3
For a filled arc-based shape, the fill closes the traced path when filling is finished. If the outline you want is a particular closed shape, trace its full boundary before ending the fill rather than assuming an open arc alone will define that outline.
Python 3.14 option: use a fill context manager
Python 3.14 adds with turtle.fill():, which starts and ends the fill around the indented drawing commands. This is equivalent to placing begin_fill() before and end_fill() after the block; use the explicit calls above for Python versions whose documentation does not include the context-manager API.
import turtle
t = turtle.Turtle()
t.fillcolor("gold")
with t.fill():
t.circle(80)
turtle.done()
Consult the Python 3.14 fill documentation before using this form in an environment that may run an earlier version.
Simple closed shapes are the most predictable fill case. The documentation cautions that results for self-intersections and overlapping shapes can depend on the operating system’s graphics behavior, the overlap pattern, and how many overlaps occur. Avoid relying on identical fill results for complex overlaps across machines.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How do I draw a polygon in Python Turtle?
For a visible polygon, move and turn to trace its sides. Put the path inside the same fill sequence if you want a colored interior:
import turtle
t = turtle.Turtle()
t.fillcolor("skyblue")
t.begin_fill()
for _ in range(3):
t.forward(100)
t.left(120)
t.end_fill()
turtle.done()
This traces a triangle: each iteration draws one side and turns 120 degrees. Change the number of sides and turn angle to make another regular polygon; the turns for a regular polygon total 360 degrees, divided by its side count.
Record the vertices as a polygon
If you need to capture the turtle’s traced vertices as a polygon object rather than merely draw and fill a path, use the separate recording API: begin_poly(), trace the movement, call end_poly(), then retrieve the result with get_poly(). The recording begins at the turtle’s current position, and the last point is connected to the first.
Recommended Free Tools
import turtle
t = turtle.Turtle()
t.begin_poly()
for _ in range(3):
t.forward(100)
t.left(120)
t.end_poly()
triangle = t.get_poly()
print(triangle)
turtle.done()
The returned polygon records vertices; it is distinct from the general fill-path sequence made with begin_fill() and end_fill(). The recording methods are documented in the Python 3.12 polygon API reference.
Quick Recap
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.




