Are you happy with your logging solution? Would you help us out by taking a 30-second survey? 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 1 year ago
Repo Created over 9 years ago
Repo Last Updated over 1 year ago
Size 5.08 MB
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 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating urwid for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

.. image:: :alt: build status :target:

.. image:: :alt: build coverage :target:

Development version documentation <>_

.. 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:


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 <//>_
  • aszlig <//>_
  • mgiusti <//>_
  • and3rson <//>_
  • pazz <//>_
  • wackywendell <//>_
  • eevee <//>_
  • marienz <//>_
  • rndusr <//>_
  • matthijskooijman <//>_
  • Julian <//>_
  • techtonik <//>_
  • garrison <//>_
  • ivanov <//>_
  • abadger <//>_
  • aglyzov <//>_
  • ismail-s <//>_
  • horazont <//>_
  • robla <//>_
  • usrlocalben <//>_
  • geier <//>_
  • federicotdn <//>_
  • jwilk <//>_
  • rr- <//>_
  • tonycpsu <//>_
  • westurner <//>_
  • grugq <//>_
  • inducer <//>_
  • winbornejw <//>_
  • hootnot <//>_
urwid open issues Ask a question     (View All Issues)
  • almost 3 years Text attributes not sufficiently documented
  • almost 3 years feature: support for 24 bit color names
  • about 3 years Beep Sound for User Error Alerts
  • about 3 years ListBox.set_focus in ListBox.keypress works only once every two keypresses
  • about 3 years Redirect stderr output to a specific Text widget
  • about 3 years `examples/` fails to update display when using `curses_display`
  • over 3 years LineBox and very small tmux panes
  • over 3 years Setting focus_position on a GridFlow (a second time) has no effect?
  • over 3 years How to make mouse events happen on release instead of press
  • over 3 years urwid crashes in process_keyqueue while attempting to process mouse event
  • over 3 years urwid.disconnect_by_key() doesn't exist.
  • over 3 years focus problem when WidgetPlaceholder is involved
  • over 3 years explain the focus concept
  • over 3 years more simplified examples in the documentation
  • over 3 years display ansi escape sequences directly and don't escape them
  • over 3 years Examples and not working as cgi's
  • almost 4 years Not being able to turn cursor invisible
  • almost 4 years urwid.Text tracebacks when empty list is provided
  • almost 4 years Add link to source code on examples site
  • almost 4 years CheckBox in ListBox with special list walker
  • almost 4 years Threading Support
  • almost 4 years AsyncioEventLoopTest failure
  • almost 4 years asyncio main loop code to reanimate exceptions fails on exceptions with more than one argument
  • about 4 years LCD display problem
  • about 4 years draw_screen() of curses_display doesn't work when reducing size of the window
  • about 4 years "Listbox contents too short" when the underlying list has been updated while a render was on-going
  • about 4 years ListBox.contents returns function
  • about 4 years AsyncioEventLoop test failure with Python 3.4 on arm* CPU
  • about 4 years CTRL-C no longer works after creating a Terminal widget
  • over 4 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/ 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