File: README.rst

package info (click to toggle)
urwid 3.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 3,232 kB
  • sloc: python: 29,010; javascript: 382; sh: 34; makefile: 22
file content (277 lines) | stat: -rw-r--r-- 8,707 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
Urwid
=====
|pypi| |docs| |gitter| |ci| |pre-commit| |coveralls|

About
=====

Urwid is a console user interface library for Python on Linux, OSX, Cygwin or other unix-like OS
and partially supports Windows OS (see below).

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.9+ 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

Windows support notes
=====================

Windows support is limited to the Windows 10+ due to ANSI support requirement.

* Not supported:

1. Terminal widget and all related render API (TermCanvas, TermCharset, TermModes, TermScroller)
2. Any file descriptors except sockets (Windows OS limitation)
3. ZMQEventLoop.

* Special requirements:

1. Extra libraries required for curses display support:

.. code-block:: bash

    pip install urwid[curses]

* CursesDisplay incorrectly handles mouse input in case of fast actions.
* Only UTF-8 mode is supported.


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.9
- 3.10
- 3.11
- 3.12
- 3.13
- 3.14
- 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

.. |gitter| image:: https://img.shields.io/gitter/room/urwid/community
   :alt: Gitter
   :target: https://gitter.im/urwid/community

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

.. |pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit
   :target: https://github.com/pre-commit/pre-commit
   :alt: pre-commit

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