Console user interface library for Python
git clone https://github.com/urwid/urwid.git
Wiki:
Requirements
Python Versions
- CPython 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15 - Full support for all extras
- CPython 3.13+ with free-threading (PEP 703 --disable-gil) - Pure-Python extras only (tornado, trio, twisted, serial, lcd)
- PyPy 3.x - Compatible extras (tornado, trio, serial, lcd)
- GraalPy 3.11, 3.12 (experimental) - Compatible extras (tornado, serial, lcd)
Operating System
- Unix-like: Linux, macOS, Cygwin (full support)
- Windows 10+: Limited support
- Curses display module requires additional setup (windows-curses package)
- ANSI support required
- Not supported: Terminal widget, file descriptor operations (except sockets), ZMQ event loop
- ZMQ: Not available on Windows (platform limitation)
Optional Dependencies by Feature
| Feature |
CPython |
Free-threaded |
PyPy |
GraalPy |
Package |
| GLib event loop |
✓ |
✗ |
✗ |
✗ |
python-gi (pygobject) |
| Twisted event loop |
✓ |
✓ (24.10.0+) |
⚠ Limited |
✗ |
twisted>=24.10.0 |
| Tornado event loop |
✓ |
✓ |
✓ |
✓ |
tornado>=6.5.8 |
| Trio event loop |
✓ |
✓ |
✓ |
✗ |
trio>=0.31.0 |
| ZMQ event loop |
✓ (Linux/Unix) |
✗ |
✗ |
✗ |
pyzmq>=26.0.0 (not available on Windows) |
| Serial/LCD display |
✓ |
✓ |
✓ |
✓ |
pyserial |
| Curses display (Windows) |
✓ |
✓ |
⚠ Limited |
✗ |
windows-curses |
| Terminal widget (urwid.vterm) |
✓ |
✓ |
✓ |
✗ |
fcntl, pty (stdlib; not supported on Windows either) |