guile
v0.4.3 · MIT · Python ≥ 3.9
guile

Python desktop apps, top to bottom.

A lightweight framework for the kind of internal dashboards, data explorers, and parameter tools you need at work or at home. Write Python, get a desktop window — no full-page re-execution on refresh, no nesting hell, no server.

$ pip install guile COPY COPIED

The right tool for a simple lab or personal project — and deliberately nothing more.

— Quick start

A counter, end to end.

This is the entire app. Layout is written top-to-bottom using with blocks — indentation matches the finished UI. gui.state holds the value; the buttons mutate it; the text re-reads it.

counter.py
import guile as gui

count = gui.state(0)

@gui.app("Counter", width=400, height=300)
def ui():
    with gui.col(align="center", justify="center", style="height:100vh"):
        with gui.card(gap=14):
            gui.title("Counter")
            with gui.row(gap=16):
                gui.button("−", variant="secondary",
                           on_click=lambda: count.update(lambda x: x - 1))
                gui.text(count, size="2xl", bold=True)
                gui.button("+",
                           on_click=lambda: count.update(lambda x: x + 1))
Counter — preview
desktop window
Counter
7
try the buttons
ships with 4 built-in themes CSS grid layouts 25+ widgets see the reference