Project: urwid

A full-featured console (xterm et al.) user interface library

Project Details

Latest version
2.3.4
Home Page
https://urwid.org/
PyPI Page
https://pypi.org/project/urwid/

Project Popularity

PageRank
0.0024224816046429826
Number of downloads
726427

Urwid

|pypi| |docs| |ci| |coveralls|

About

Urwid is a console user interface library for Python on Linux, OSX, Cygwin or other unix-like OS. 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, asyncio, trio, ZeroMQ 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
  • 24-bit (true color), 256 color, and 88 color mode support
  • Compatible with Python 3.7+ and PyPy

Home Page: http://urwid.org/

Installation

To install using pip

.. code:: bash

pip install urwid

For advanced functionality extra requirements need to be installed. Example for ZeroMQ event loop and LCD display:

.. code:: bash

pip install urwid[serial,zmq]

Alternatively if you are on Debian or Ubuntu

.. code:: bash

apt-get install python3-urwid

Testing

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 py39             # Test Python 3.9 only
tox -e py39,py10,pypy3  # Test Python 3.9, Python 3.10 & pypy3

Supported Python versions

  • 3.7
  • 3.8
  • 3.9
  • 3.10
  • 3.11
  • 3.12
  • pypy3

Authors

Creator

wardi <//github.com/wardi>_

Maintainers

and3rson <//github.com/and3rson>, tonycpsu <//github.com/tonycpsu>, ulidtko <//github.com/ulidtko>, penguinolog <//github.com/penguinolog>

Contributors

1in7billion <//github.com/1in7billion>, abadger <//github.com/abadger>, agrenott <//github.com/agrenott>, akorb <//github.com/akorb>, alethiophile <//github.com/alethiophile>, aleufroy <//github.com/aleufroy>, alobbs <//github.com/alobbs>, amjltc295 <//github.com/amjltc295>, and-semakin <//github.com/and-semakin>, andrewshadura <//github.com/andrewshadura>, andy-z <//github.com/andy-z>, anttin2020 <//github.com/anttin2020>, Apteryks <//github.com/Apteryks>, Arfrever <//github.com/Arfrever>, AutoAwesome <//github.com/AutoAwesome>, belak <//github.com/belak>, berney <//github.com/berney>, bk2204 <//github.com/bk2204>, BkPHcgQL3V <//github.com/BkPHcgQL3V>, bwesterb <//github.com/bwesterb>, carlos-jenkins <//github.com/carlos-jenkins>, Certseeds <//github.com/Certseeds>, Chipsterjulien <//github.com/Chipsterjulien>, chrisspen <//github.com/chrisspen>, cltrudeau <//github.com/cltrudeau>, Codeberg-AsGithubAlternative-buhtz <//github.com/Codeberg-AsGithubAlternative-buhtz>, cortesi <//github.com/cortesi>, d0c-s4vage <//github.com/d0c-s4vage>, derdon <//github.com/derdon>, dholth <//github.com/dholth>, dimays <//github.com/dimays>, dlo <//github.com/dlo>, dnaeon <//github.com/dnaeon>, doddo <//github.com/doddo>, douglas-larocca <//github.com/douglas-larocca>, drestebon <//github.com/drestebon>, dsotr <//github.com/dsotr>, dwf <//github.com/dwf>, EdwardBetts <//github.com/EdwardBetts>, elenril <//github.com/elenril>, EnricoBilla <//github.com/EnricoBilla>, extempore <//github.com/extempore>, fabiand <//github.com/fabiand>, floppym <//github.com/floppym>, flowblok <//github.com/flowblok>, fmoreau <//github.com/fmoreau>, goncalopp <//github.com/goncalopp>, Gordin <//github.com/Gordin>, GregIngelmo <//github.com/GregIngelmo>, grzaks <//github.com/grzaks>, gurupras <//github.com/gurupras>, HarveyHunt <//github.com/HarveyHunt>, Hoolean <//github.com/Hoolean>, hukka <//github.com/hukka>, hydratim <//github.com/hydratim>, ids1024 <//github.com/ids1024>, imrek <//github.com/imrek>, isovector <//github.com/isovector>, itaisod <//github.com/itaisod>, ixxra <//github.com/ixxra>, jeblair <//github.com/jeblair>, johndeaton <//github.com/johndeaton>, jonblack <//github.com/jonblack>, jspricke <//github.com/jspricke>, kedder <//github.com/kedder>, Kelketek <//github.com/Kelketek>, KennethNielsen <//github.com/KennethNielsen>, kesipyc <//github.com/kesipyc>, kkrolczyk <//github.com/kkrolczyk>, Kwpolska <//github.com/Kwpolska>, Lahorde <//github.com/Lahorde>, laike9m <//github.com/laike9m>, larsks <//github.com/larsks>, lfam <//github.com/lfam>, lgbaldoni <//github.com/lgbaldoni>, lighth7015 <//github.com/lighth7015>, livibetter <//github.com/livibetter>, Lothiraldan <//github.com/Lothiraldan>, Mad-ness <//github.com/Mad-ness>, madebr <//github.com/madebr>, magniff <//github.com/magniff>, marlox-ouda <//github.com/marlox-ouda>, mattymo <//github.com/mattymo>, mdtrooper <//github.com/mdtrooper>, mgk <//github.com/mgk>, mimi1vx <//github.com/mimi1vx>, mobyte0 <//github.com/mobyte0>, MonAaraj <//github.com/MonAaraj>, MonthlyPython <//github.com/MonthlyPython>, mountainstorm <//github.com/mountainstorm>, mselee <//github.com/mselee>, mwhudson <//github.com/mwhudson>, naquad <//github.com/naquad>, nchavez324 <//github.com/nchavez324>, neumond <//github.com/neumond>, nolash <//github.com/nolash>, ntamas <//github.com/ntamas>, nyov <//github.com/nyov>, ocarneiro <//github.com/ocarneiro>, okayzed <//github.com/okayzed>, pquentin <//github.com/pquentin>, rbanffy <//github.com/rbanffy>, ReddyKilowatt <//github.com/ReddyKilowatt>, regebro <//github.com/regebro>, renegarcia <//github.com/renegarcia>, rianhunter <//github.com/rianhunter>, roburban <//github.com/roburban>, RRMoelker <//github.com/RRMoelker>, rwarren <//github.com/rwarren>, scopatz <//github.com/scopatz>, seanhussey <//github.com/seanhussey>, seonon <//github.com/seonon>, shadedKE <//github.com/shadedKE>, sithglan <//github.com/sithglan>, Sjc1000 <//github.com/Sjc1000>, sporkexec <//github.com/sporkexec>, squrky <//github.com/squrky>, ssbr <//github.com/ssbr>, techdragon <//github.com/techdragon>, thehunmonkgroup <//github.com/thehunmonkgroup>, thisch <//github.com/thisch>, thornycrackers <//github.com/thornycrackers>, TomasTomecek <//github.com/TomasTomecek>, tompickering <//github.com/tompickering>, tony <//github.com/tony>, ttanner <//github.com/ttanner>, tu500 <//github.com/tu500>, uSpike <//github.com/uSpike>, vega0 <//github.com/vega0>, vit1251 <//github.com/vit1251>, waveform80 <//github.com/waveform80>, Wesmania <//github.com/Wesmania>, xandfury <//github.com/xandfury>, xndcn <//github.com/xndcn>, zhongshangwu <//github.com/zhongshangwu>, zrax <//github.com/zrax>

.. |pypi| image:: https://img.shields.io/pypi/v/urwid :alt: current version on PyPi :target: https://pypi.python.org/pypi/urwid

.. |docs| image:: https://github.com/urwid/urwid/actions/workflows/documentation.yml/badge.svg?branch=master :alt: Documentation Status :target: https://urwid.org

.. |ci| image:: https://github.com/urwid/urwid/actions/workflows/pythonpackage.yml/badge.svg?branch=master :target: https://github.com/urwid/urwid/actions :alt: CI status

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