cursed!:
______ __ __ ______ ______ ______ _____ /\ ___\ /\ \/\ \ /\ == \ /\ ___\ /\ ___\ /\ __-. \ \ \____ \ \ \_\ \ \ \ __< \ \___ \ \ \ __\ \ \ \/\ \ \ \_____\ \ \_____\ \ \_\ \_\ \/\_____\ \ \_____\ \ \____- \/_____/ \/_____/ \/_/ /_/ \/_____/ \/_____/ \/____/
Simplified curses interface with concurrency, for quick and sane curses apps.
Allows easy creation of windows and menus. Code for each window runs concurrently.
Please see full documentation available here: http://pythonhosted.org/cursed/
cursed was tested with Python 3.4 and 2.7, and depends on the Python package six for compatibility.
With pip, for the latest stable:
$ pip install cursed
Or from the project root directory:
$ python setup.py install
Example:
from cursed import CursedApp, CursedWindow
# the main context of the curses application
app = CursedApp()
# Derive from CursedWindow to declare curses windows to be created after app.run()
# It is required to declare X, Y, WIDTH, and HEIGHT for each window.
# You'll want to put the main looping code for each window thread in the `update` class function.
class MainWindow(CursedWindow):
# Coordinate for top-left of window.
X, Y = (0, 0)
# WIDTH and HEIGHT can be 'max' or integers.
WIDTH, HEIGHT = ('max', 'max')
# Create a default border around the window.
BORDERED = True
@classmethod
def update(cls):
''' update runs every tick '''
# Hello world printed at x,y of 0,0
cls.addstr('Hello, world!', 0, 0)
# Get character keycode of keypress, or None.
if cls.getch() == 27:
# Escape was pressed. Quit.
# 'quit' must be triggered for each open window for the program to quit.
# Call cls.trigger('quit') to quit the window you're in, and to quit the other
# declared windows, call OtherWindow.trigger('quit') which will run in that
# window's thread, regardless of where it's called.
cls.trigger('quit')
# To trigger app to start
result = app.run()
# check if ctrl-C was pressed
if result.interrupted():
print('Quit!')
else:
# Raises an exception if any thread ran into a different exception.
result.unwrap()
Many more examples are available in the root of the repository at examples/
| 0.2.0: |
|
|---|---|
| 0.1.9: |
|
| 0.1.8: |
|
| 0.1.7: |
|
| 0.1.6: |
|
| 0.1.5: |
|
| 0.1.4: |
|
| 0.1.3: |
|
| 0.1.2: |
|
| 0.1.1: |
|
| 0.1.0: |
|
| 0.0.2: |
|
| 0.0.1: |
|