Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Console user interface library for Python (official repo)

Subscribe to updates I use urwid

Statistics on urwid

Number of watchers on Github 1210
Number of open issues 88
Average time to close an issue 2 months
Main language Python
Average time to merge a PR about 1 month
Open pull requests 41+
Closed pull requests 22+
Last commit over 2 years ago
Repo Created over 10 years ago
Repo Last Updated over 2 years ago
Size 5.08 MB
Homepage urwid.org
Organization / Authorurwid
Page Updated
Do you use urwid? Leave a review!
View open issues (88)
View urwid activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating urwid for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

.. image:: https://travis-ci.org/urwid/urwid.png?branch=master :alt: build status :target: https://travis-ci.org/urwid/urwid/

.. image:: https://coveralls.io/repos/github/urwid/urwid/badge.svg :alt: build coverage :target: https://coveralls.io/github/urwid/urwid

Development version documentation <http://urwid.readthedocs.org/en/latest/>_

.. content-start


Urwid is a console user interface library for Python. It includes many features useful for text console application developers including:

  • Applications resize quickly and smoothly
  • Automatic, programmable text alignment and wrapping
  • Simple markup for setting text attributes within blocks of text
  • Powerful list box with programmable content for scrolling all widget types
  • Your choice of event loops: Twisted, Glib, Tornado or select-based loop
  • Pre-built widgets include edit boxes, buttons, check boxes and radio buttons
  • Display modules include raw, curses, and experimental LCD and web displays
  • Support for UTF-8, simple 8-bit and CJK encodings
  • 256 and 88 color mode support
  • Compatible with Python 2.6, 2.7, 3.2+ and PyPy

Home Page: http://urwid.org/


To run tests locally, install & run tox. You must have appropriate Python versions installed to run tox for each of them.

To test code in all Python versions:

.. code:: bash

tox                    # Test all versions specified in tox.ini:
tox -e py36            # Test Python 3.6 only
tox -e py27,py36,pypy  # Test Python 2.7, Python 3.6 & pypy


  • wardi <//github.com/wardi>_
  • aszlig <//github.com/aszlig>_
  • mgiusti <//github.com/mgiusti>_
  • and3rson <//github.com/and3rson>_
  • pazz <//github.com/pazz>_
  • wackywendell <//github.com/wackywendell>_
  • eevee <//github.com/eevee>_
  • marienz <//github.com/marienz>_
  • rndusr <//github.com/rndusr>_
  • matthijskooijman <//github.com/matthijskooijman>_
  • Julian <//github.com/Julian>_
  • techtonik <//github.com/techtonik>_
  • garrison <//github.com/garrison>_
  • ivanov <//github.com/ivanov>_
  • abadger <//github.com/abadger>_
  • aglyzov <//github.com/aglyzov>_
  • ismail-s <//github.com/ismail-s>_
  • horazont <//github.com/horazont>_
  • robla <//github.com/robla>_
  • usrlocalben <//github.com/usrlocalben>_
  • geier <//github.com/geier>_
  • federicotdn <//github.com/federicotdn>_
  • jwilk <//github.com/jwilk>_
  • rr- <//github.com/rr->_
  • tonycpsu <//github.com/tonycpsu>_
  • westurner <//github.com/westurner>_
  • grugq <//github.com/grugq>_
  • inducer <//github.com/inducer>_
  • winbornejw <//github.com/winbornejw>_
  • hootnot <//github.com/hootnot>_
urwid open issues Ask a question     (View All Issues)
  • over 3 years Text attributes not sufficiently documented
  • over 3 years feature: support for 24 bit color names
  • over 3 years Beep Sound for User Error Alerts
  • almost 4 years ListBox.set_focus in ListBox.keypress works only once every two keypresses
  • almost 4 years Redirect stderr output to a specific Text widget
  • almost 4 years `examples/subproc.py` fails to update display when using `curses_display`
  • about 4 years LineBox and very small tmux panes
  • about 4 years Setting focus_position on a GridFlow (a second time) has no effect?
  • about 4 years How to make mouse events happen on release instead of press
  • about 4 years urwid escape.py crashes in process_keyqueue while attempting to process mouse event
  • about 4 years urwid.disconnect_by_key() doesn't exist.
  • over 4 years focus problem when WidgetPlaceholder is involved
  • over 4 years explain the focus concept
  • over 4 years more simplified examples in the documentation
  • over 4 years display ansi escape sequences directly and don't escape them
  • over 4 years Examples calc.py and tour.py not working as cgi's
  • over 4 years Not being able to turn cursor invisible
  • over 4 years urwid.Text tracebacks when empty list is provided
  • over 4 years Add link to source code on examples site
  • over 4 years CheckBox in ListBox with special list walker
  • over 4 years Threading Support
  • over 4 years AsyncioEventLoopTest failure
  • over 4 years asyncio main loop code to reanimate exceptions fails on exceptions with more than one argument
  • almost 5 years LCD display problem
  • almost 5 years draw_screen() of curses_display doesn't work when reducing size of the window
  • almost 5 years "Listbox contents too short" when the underlying list has been updated while a render was on-going
  • almost 5 years ListBox.contents returns function
  • almost 5 years AsyncioEventLoop test failure with Python 3.4 on arm* CPU
  • almost 5 years CTRL-C no longer works after creating a Terminal widget
  • almost 5 years (shift) tab and select next/prev
urwid open pull requests (View All Pulls)
  • Correct Edit documentation
  • Correct error messages in Filler
  • python3 compat
  • python3 compatible exception handling
  • python3 compatible function definitions
  • Implement rudimentary support for 'next selectable' for Pile()/Columns()
  • Fix default screen size on raw display
  • urwid/widget.py: Edit: Do not crash on ISO-8859-15 with non utf-8 locale
  • minor compat issues
  • Browse example, python 3 exception and print fix
  • Python3 fix in graph example
  • Implement italics support
  • remove duplicate Columns.dividechars declaration
  • Change SelectableIcon default cursor_position to 0.
  • Typo fixes
  • Added widget PathEdit
  • Python 2 and 3 compatibility using six
  • rebuild pngs, from v1.3.0
  • oddities when rebuilding pngs
  • Re-raise exceptions in AsyncioEventLoop properly
  • Remove pollinglistwalker
  • Increase idle emulation delay
  • Add a multi column container
  • Add a ReadlineMixin class to emulate some of readline behavior
  • Fix the asyncio example, and make the raw Screen work without real files
  • Switch to relative imports of the urwid modules
  • Convert most examples to python3
  • asyncio eventloop: fix callback exc reraise
  • Add 'linefocus' option to Columns class
  • Fix missing `modified` signal in SimpleFocusListWalker
  • FloatEdit class to edit floats like the IntEdit class to edit integers
  • Add support for keys 'home' and 'end' to ListBox
  • fix: raw display should release file descriptors (issue #221)
  • Fix typos
  • support for py3.6
  • Additional listbox functionality
  • Emit postchange after text is updated
  • extended numerical editing: integers and floats
  • Add ability to specify LineBox title attribute
  • [WIP] 24-bit (true color) support.
  • Re-raise coroutine exceptions in AsyncioEventLoop properly
urwid questions on Stackoverflow (View All Questions)
  • How to update displayed text in urwid?
  • How to get urwid RadioButton and CheckBox values?
  • Urwid: make cursor invisible
  • urwid change palette colors on the fly
  • Urwid focus in Listbox columns
  • create an autosuggestion with urwid
  • Python Urwid issues with set_alarm
  • Issues with Edit() for urwid
  • Struggling with urwid set_alarm_at .. don't know how to create an alternative widget or another way to make it print
  • Python: urwid: trying to handle different views
  • Python library urwid - AIX Install - fcntl cannot be imported
  • Urwid ProgessBar does not update properly
  • double clicks in urwid?
  • mac os x urwid AttributeError: 'SelectableIcon' object has no attribute '_SelectableIcon__super'
  • how to change the ui on urwid
  • urwid watch_file blocks keypress
  • Italicizing text in urwid
  • Changing contents of currently displayed listbox in urwid/python2.6
  • Urwid, autobahn and twisted eventloop integration
  • urwid - output screen for endless loop
  • I am unable to get urwid work
  • I am unable to get urwid tutorial examples to work
  • python / urwid ListBox object not callable
  • Missing urwid on OS X Lion Python 2.7
  • urwid dont update screen on loop.draw_screen()
  • How to create nested listboxes in urwid?
  • Python + Urwid: columnized ListBox?
  • Python urwid module- AttributeError: 'NoneType' object has no attribute 'render
  • Create horizontally and vertically scrollable table inside Terminal application with Python Urwid/NCurses
  • Python ncurses, CDK, urwid difference
urwid list of languages used
Other projects in Python