Skip to content

The Python frontend framework for desktop apps

Design your interface visually or in code, style it with themes and GPU shaders, and ship it to Windows, macOS and Linux. Pure Python, drawn natively by Rust. Inspired by the UI of the Zed editor and by Godot, Unreal Engine, Visual Basic and Qt Designer; mobile and web are on the roadmap.
Latest stable release: v1.9.0 · 2026-10-22What's new →
Pyzed Design with a sign-in form open: toolbox and outline on the left, the form in the center and its properties on the rightPyzed Design with a sign-in form open: toolbox and outline on the left, the form in the center and its properties on the right
ready-made components
90+
built-in themes
11
Lucide icons
~2000
desktop platforms
3
native rendering (Iced)
Rust

Explore

Everything Pyzed covers

Pyzed is a library, a visual designer and a set of tools around them. Jump straight to the part you need.

Features

Everything you need to build a desktop app

From the first sketch to the executable you ship: a visual designer, a component system, a code editor that knows your project, and a modern UI toolkit with themes and dark mode.

A button, a text box and a check box dragged from the toolbox onto an empty form in Pyzed Design
Draw a window: drag controls onto the form.
Paint it on the GPU: wire nodes into a shader.

Pyzed Design

Draw your windows, then press F5

A form editor in the spirit of Visual Basic and Qt Designer, built with Pyzed itself. What you draw is what runs: no code generation step, no surprises.

  • Drag components from the toolbox, nest them in panels, flex rows and grids
  • Smart guides, snap to grid, align, distribute and anchors like WinForms
  • Properties and Events panels: double-click an event to write its handler
  • Saved as a readable .pzform plus a plain Python file, run with pyzed run
Visual designer guide
The designer with a sign-in form and the properties of the selected buttonThe designer with a sign-in form and the properties of the selected button
The sign-in form running as a real window

Component designer

Reusable components, like Godot scenes

Design a component once and drop it into any form, or inside other components. Each one is an ordinary pz.Component class, so drawing it and writing it by hand are the same thing.

  • Typed properties, internal state, methods and custom events
  • Bindings that keep child controls in sync with properties
  • Inheritance and nesting, with responsive layouts
  • Appears in the toolbox with its own label, icon and category
Component designer guide
A ProfileCard component with its class, toolbox entry, layout and properties
Cards built from the component, running

Code editor

A Python editor that knows your project

Event handlers are written right inside the designer, backed by Astral’s ty and ruff language servers running in your project’s own environment.

  • Completion with signatures and docstrings, auto-imports and form. controls
  • Inline diagnostics (error lens), a problems list and code lens references
  • Code folding, minimap, auto-closing brackets, cursor styles and a separate theme
  • Format with ruff when you apply your changes
Code editor features
Completing a function of the re module with its signature, and inline errors

Projects

Real projects, managed for you

Every app is a normal uv project with its own .venv. Pyzed Design creates it, installs packages and runs the tools, so your forms can import any library from PyPI.

  • Add, upgrade and remove dependencies from the Project tab
  • One click to lint, format and type-check with ruff and ty
  • Create a git repository and keep the UI next to your backend code
Projects guide
The Project tab with forms, dependencies and tools of a uv project

AI agents

An AI agent that builds with you

Describe a screen and the agent in Pyzed Design places the controls, writes the handlers, looks at the result and checks its code; every change can be undone. Your own coding agent gets the same knowledge through MCP.

  • Any model: Claude, GPT, Gemini, Copilot, OpenRouter, local models with Ollama, and external agents
  • Attach images, add MCP servers, keep keys in the system keychain
  • An MCP server and llms.txt so Cursor, VS Code or Zed write correct Pyzed code
  • pyzed.agents puts the same agent loop inside your own apps
Pyzed for AI agents
The agent panel of Pyzed Design after adding a switch to a form and wiring its event
A chat app built with pyzed.agents, streaming an answer

Component library

90+ ready-made components

Buttons, inputs, tabs, a file tree, a command palette, tables, charts, toasts, dialogs, a code editor with syntax highlighting, a terminal and a whole workspace with resizable docks. All of them follow the active theme and can be styled per instance.

  • Build them from code with pyzed.ui, or place them from the designer’s toolbox
  • IBM Plex fonts and about 2000 Lucide icons included
Browse the component library
A gallery of Pyzed components: buttons, inputs, tabs, an editor, a tree, menus and notificationsA gallery of Pyzed components: buttons, inputs, tabs, an editor, a tree, menus and notifications

Blocks

Whole screens, ready to copy

Dashboards, a login, settings, a chat, a kanban board, a data table, a music player and more: complete, tested screens built from the component library. Copy one into your project and change what you need.

  • Every block has a dark and light preview and its full source
  • Small, readable files: a good starting point for you or for your AI agent
Browse the blocks
The dashboard block: stat cards, a chart and a table of recent ordersThe dashboard block: stat cards, a chart and a table of recent orders

Themes

Light, dark, and your own themes

One, Ayu and Gruvbox ship with one shared set of color tokens, in light and dark variants. Follow the system appearance, switch themes at runtime, derive your own in one line or import a Zed theme file.

  • 11 built-in themes, one set of color tokens for every component
  • Per-window themes and accent colors
Theming guide
A code editor built with Pyzed in One Dark (One Light in the light theme)A code editor built with Pyzed in One Dark (One Light in the light theme)
The same app in Gruvbox Dark with the file finder open

Effects & game-style UIs

Interfaces that glow

Pyzed draws on the GPU, so a Python app can look like a modern game: frosted glass with real backdrop blur, bloom that spills light from bright parts, transparency, rotation and your own WGSL shaders.

Make games

From Snake to a neon shoot 'em up

Everything a 2D game needs is already in Pyzed: a GPU canvas, a loop that runs once per frame, the keys held down right now, sprites and particles, and the whole widget library for menus and HUDs.

  • Three complete games, explained step by step: Snake, Breakout and Neon Invaders
  • pz.frames for a smooth 60 fps loop, held keys and mouse input
  • Bloom, glow and glass on top of the action, written in plain Python
Making games with Pyzed
Neon Invaders: pixel-art invaders, neon glow and a glass HUD
Breakout with particles and a 60 fps loop

Connect your backend

The libraries you already use

Pyzed is only the interface: the rest of your app is ordinary Python. Runnable demos show how to put a native desktop front end on the backend stack you know.

  • FastAPI client with the server embedded in the same process
  • SQLAlchemy and SQLModel: 20,000 rows in a virtual table, forms validated by your models
  • Django’s async ORM, httpx and Pydantic, aiosqlite and more
Integration tutorials
A contacts app with 20,000 rows from SQLAlchemy in a virtual table and an edit panel
A desktop client for a FastAPI server

Why Pyzed

A Python GUI for a new generation

tkinter, Kivy and PyQt made Python desktop apps possible. Pyzed makes them look and feel like the tools you use every day, and is honest about where the others still win.

Pyzed compared with other Python GUI toolkits
Pyzed compared with other Python GUI toolkitsPyzedtkinterPyQt / PySideKivyFlet
Modern look and dark mode by defaultYes11 themesNoPartly or third-partystylablePartly or third-partyKivyMDYesMaterial
GPU renderingYeswgpuNoPartly or third-partyQt QuickYesOpenGLYesFlutter
Visual designerYesbuilt inPartly or third-partythird-partyYesQt DesignerNoNo
Hot reload that keeps stateYesNoPartly or third-partyQML onlyPartly or third-partythird-partyPartly or third-partyrestarts
async callbacksYesNoPartly or third-partyQtAsyncioYesYes
AI tooling (MCP, llms.txt, agents)YesNoPartly or third-partyC++/QMLNoYesMCP server
Mobile and webNodesktop onlyNoPartly or third-partyAndroid previewYesmobileYes

YesPartly or third-partyNo

And much more

Batteries included

The details that turn a prototype into an app people enjoy using.

Code first, too

An app in 20 lines

Prefer to write everything by hand? Pyzed is a regular Python library. This is a complete app:

counter.py
import pyzed as pz
from pyzed import ui
class Counter(pz.App):
title = "Counter"
size = (360, 220)
def __init__(self):
self.count = 0
def add(self, step):
self.count += step
def view(self):
return pz.center(pz.column([
ui.heading(str(self.count)),
pz.row([
ui.button("1", lambda: self.add(-1), icon="minus"),
ui.button("1", lambda: self.add(1), icon="plus", variant="solid"),
ui.icon_button("rotate-ccw", lambda: setattr(self, "count", 0)),
], spacing=8),
], spacing=16, align="center"), bg=self.theme.editor)
pz.run(Counter)
The counter app: a number above the minus, plus and reset buttons

python counter.py

Learn

Explore the docs

Pick a starting point.

Start building today

Free and open source. Get the designer as a standalone app, or install the library with pip.

pip install pyzed-ui