Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk4 min

Draw a Circle in Python Turtle: Arcs, Fills and Polygons

A runnable beginner guide to Turtle circles, partial arcs, filled shapes and polygon drawing—with version notes for Python 3.12 and 3.14.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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().

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

Turtle 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.

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.

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:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.

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.

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

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.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

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.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.