[Urwid] ANN: Urwid 1.0.0 - Console UI Library

Ian Ward ian at excess.org
Thu Sep 22 11:05:00 EDT 2011

Announcing Urwid 1.0.0

Urwid home page:



About this release:

This is a major feature release for Urwid:

It's the first official release that has support for Python 3.

There's a new experimental Terminal widget so you can terminal while you
terminal or write a screen-clone.

There's a new example showing how to serve Urwid interfaces to many
users simultaneously over ssh with Twisted.

There are new classes to help with creating dynamic tree views of
anything you have that's tree-like.

There are new widgets for working with pop-ups so you can now have all
the menu bars, drop-downs and combo-boxes you can write.

The old requirement to sprinkle draw_screen() calls around your
callbacks is gone.  Urwid now updates the screen automatically after
everything else is done.

There's a new simple MainLoop method for catching updates from other
threads and processes.  No need to manually fumble with os.pipe() and
event loops.

And lots more...

Happy 1.0 Urwid!  It's been a great nearly-seven years since our first
release.  Huge thanks to everyone that's contributed code, docs, bug
reports and help on the mailing list and IRC.

New in this release:

  * New support for Python 3.2 from the same 2.x code base,
    requires distribute instead of setuptools (by Kirk McDonald,
    Wendell, Marien Zwart) everything except TwistedEventLoop and
    GLibEventLoop is supported

  * New experimental Terminal widget with xterm emulation and
    terminal.py example program (by aszlig)

  * Edit widget now supports a mask (for passwords), has a
    insert_text_result() method for full-field validation and
    normalizes input text to Unicode or bytes based on the caption
    type used

  * New TreeWidget, TreeNode, ParentNode, TreeWalker
    and TreeListBox classes for lazy expanding/collapsing tree
    views factored out of browse.py example program, with new
    treesample.py example program (by Rob Lanphier)

  * MainLoop now calls draw_screen() just before going idle, so extra
    calls to draw_screen() in user code may now be removed

  * New MainLoop.watch_pipe() method for subprocess or threaded
    communication with the process/thread updating the UI, and new
    subproc.py example demonstrating its use

  * New PopUpLauncher and PopUpTarget widgets and MainLoop option
    for creating pop-ups and drop-downs, and new pop_up.py example

  * New twisted_serve_ssh.py example (by Ali Afshar) that serves
    multiple displays over ssh from the same application using
    Twisted and the TwistedEventLoop

  * ListBox now includes a get_cursor_coords() method, allowing
    nested ListBox widgets

  * Columns widget contents may now be marked to always be treated
    as flow widgets for mixing flow and box widgets more easily

  * New lcd_display module with support for CF635 USB LCD panel and
    lcd_cf635.py example program with menus, slider controls and a
    custom font

  * Shared command_map instance is now stored as Widget._command_map
    class attribute and may be overridden in subclasses or individual
    widgets for more control over special keystrokes

  * Overlay widget parameters may now be adjusted after creation with
    set_overlay_parameters() method

  * New WidgetPlaceholder widget useful for swapping widgets without
    having to manipulate a container widget's contents

  * LineBox widgets may now include title text

  * ProgressBar text content and alignment may now be overridden

  * Use reactor.stop() in TwistedEventLoop and document that Twisted's
    reactor is not designed to be stopped then restarted

  * curses_display now supports AttrSpec and external event loops
    (Twisted or GLib) just like raw_display

  * raw_display and curses_display now support the IBMPC character
    set (currently only used by Terminal widget)

  * Fix for a gpm_mev bug preventing user input when on the console

  * Fix for leaks of None objects in str_util extension

  * Fix for WidgetWrap and AttrMap not working with fixed widgets

  * Fix for a lock up when attempting to wrap text containing wide
    characters into a single character column

About Urwid

Urwid is a console UI library for Python. It features fluid interface
resizing, Unicode support, multiple text layouts, simple attribute
markup, powerful scrolling list boxes and flexible interface design.

Urwid is released under the GNU LGPL.

More information about the Urwid mailing list