Skip to main content

PyDeskUI

Professional tkinter/ttk components for Python 3.13+ and Tcl/Tk 9, with zero third-party runtime dependencies. Version 0.2.0 uses Tk 9's native SVG reader for scalable icons and compact control surfaces.

Desktop studio

Light Dark
PyDeskUI desktop studio in light mode PyDeskUI desktop studio in dark mode

The gallery includes the complete component collection, three desktop scenes, and a live theme editor. From a repository checkout, run python examples/gallery.py to explore it. The gallery is a demonstration, not a complete API or platform/accessibility test.

Installation

Install PyDeskUI from PyPI:

python -m pip install pydeskui

Check that Python is 3.13 or newer and is linked to Tk 9:

python -c "import tkinter as tk; r=tk.Tk(); print(r.tk.call('info','patchlevel')); r.destroy()"

Tk 8.6 is rejected when a Theme or component is created. A virtual environment inherits Tcl/Tk from its base interpreter; installing PyDeskUI cannot replace it.

Quick start

import tkinter as tk
from pydeskui import Button, Card, Entry, Label, Theme

root = tk.Tk()
theme = Theme(root, radius=6, density="default", font_size=13)
panel = Card(root, theme=theme)
panel.pack(fill="both", expand=True, padx=16, pady=16)
Label(panel, text="Project name", theme=theme).pack(anchor="w")
value = tk.StringVar(master=root, value="Hello")
Entry(panel, textvariable=value, placeholder="Untitled", theme=theme).pack(fill="x")
Button(panel, text="Clear", variant="secondary", theme=theme,
       command=lambda: value.set("")).pack(anchor="e", pady=8)
root.mainloop()

The caller owns the parent, domain state and event loop. All GUI operations run on the Tk thread. Importing the library never creates a root. Themes use scoped styles; widget destruction cancels owned work and retains caller variables.

The pydeskui.widgets export surface contains 38 components (excluding data helpers and contexts):

Group Components
Existing controls and views Button, Entry, SearchEntry, ItemList, DetailView, Form, ProgressView, Dialog
Structure and data Frame, Label, Card, Separator, Badge, Icon, Sidebar, Toolbar, Tabs, SplitPane, ScrollArea, Table, Tree
Additional inputs Textarea, Checkbox, RadioGroup, Switch, Select, Combobox, Slider, Spinbox
Overlays and feedback Tooltip, Popover, DropdownMenu, ContextMenu, Alert, Toast, EmptyState, Skeleton, Sheet

Themes default to keyboard-aware focus rings: pointer interaction stays visually quiet while Tab and arrow-key navigation remains visible. Set focus_ring to "always" or "never" when an application needs an explicit policy.

Supporting APIs include Item, FieldSpec, Theme, TranslationContext, Scheduler, CancelHandle, check_runtime, load_image, load_svg and UnsupportedTkVersionError. Tk 9 loads SVG, PNG and GIF directly. Bundled icons are SVG source assets and are rendered at the active logical size.

Documentation

See the design system, appearance decision, implemented API, migration guide, design documents, and agent skill.

Contributing

Development setup, testing, and release checks are documented in the contribution guide.

Support

If PyDeskUI is useful to you, you can support its development on Buy Me a Coffee.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydeskui-0.2.0.tar.gz (553.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydeskui-0.2.0-py3-none-any.whl (53.6 kB view details)

Uploaded Python 3

File details

Details for the file pydeskui-0.2.0.tar.gz.

File metadata

  • Download URL: pydeskui-0.2.0.tar.gz
  • Upload date:
  • Size: 553.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for pydeskui-0.2.0.tar.gz
Algorithm Hash digest
SHA256 beac1db02cad2e03001531bb38b10240f1dede04643d7f009b4d6f5ccb59aebf
MD5 24a0e0d9c57874591ca961d5bc9f9914
BLAKE2b-256 36361493a93be1d78e604d2a7790ca1f7a8e66815fbe65601ee4d76b5aae65d0

See more details on using hashes here.

File details

Details for the file pydeskui-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pydeskui-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 53.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for pydeskui-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bdc1c30a441b7dc592d66b61a015ecc6e815004b095a0f748087528f38651f10
MD5 e3c6e5f7f902bc4ddb6a57a1ca4330ae
BLAKE2b-256 958edb312c9a61d0fd09293547ee1a41289c14f07a0b7a168f45da52ceab3e44

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.3

2 files

This release

0.2.0 This release

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page