PC_Workman / blog
Wednesday Code Autopsy · #4

The Canvas Arc Style Nobody Uses

The most beautiful UI doesn't always come from adding packages.

By Marcin Firmuga·2026-04-15·2 min read·Wednesday Code Autopsy #4

I needed a circular progress gauge. Googled "Python circular progress bar." Every answer: pip install this library.

I drew mine with pure Canvas. Zero dependencies. Here's the trick everyone misses. It lives in the new "First Setup & Drivers" page — clean, pure tkinter. The secret? Two parameters most devs never touch.

def _draw_arc(self, canvas, score):
    # background arc
    canvas.create_arc(10, 10, 110, 110,
        start=225, extent=-270,
        style="arc", outline="#1f2937", width=7)
    # progress arc
    canvas.create_arc(10, 10, 110, 110,
        start=225, extent=-int(270 * score / 100),
        style="arc", outline=color, width=7)

style="arc" is the magic. Most people only use Canvas for rectangles or ovals. Almost nobody knows that style="arc" draws perfect circle segments.

tkinter's Canvas has three arc styles

That third one? That's your circular progress bar. 99% of developers only ever use the first one — or don't use arcs at all.

This powers the health check in PC Workman (110+ downloads, 23 GitHub stars) and makes the whole section feel premium — all because I knew the weird, forgotten corners of tkinter instead of reaching for another dependency.

The most beautiful UI doesn't always come from adding packages. Sometimes it comes from actually reading the docs of what you already have.

pythontkinterBuildInPublic
This is the project behind the post. PC Workman is a free, open-source Windows system monitor with an offline AI assistant - everything described here is real, shipped code. Download it or read the source.
← #3How I Almost Made Myself Invisible to AI#5 →The Trick Is Knowing When NOT to Flush RAM
MF

Marcin Firmuga

Solo developer · HCK_Labs · building PC Workman in public

Every edition is written from that week's real commits. Newest posts premiere on LinkedIn - the archive lives here. More about me: my story.