Plié: a terminal user interface library built for a modern python
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
experimental
plie
.gitignore
.travis.yml
README.rst
event_handler_mockups.py
example.py
profiling_benchmark.py
requirements.txt
setup.py

README.rst

Plié: A Python Terminal User Interface Library

Plié helps you create interactive complexly laid out terminal applications with ease.

import plie
import time


a_view_dict = {
    'header' : {
        'bounds': plie.Bounds(width='100%', height=1),
        'view_object': plie.Text('title text')
        },
    'body' : {
        'bounds': plie.Bounds(width='100%', height='50%'),
        'view_object': plie.Text('some text second line', justify='centered'),
        'positioning': plie.Position(vertical='centered', horizontal='centered'),
        'styles': []
        },
    'footer' : {
        'bounds': plie.Bounds(width='100%', height=2),
        'view_object': plie.Text("The footer...")
        },
    'util' : {'handles_input': 'body'}
}

a_view = plie.View(a_view_dict)

renderer = plie.Renderer(view=a_view)
renderer.display()
time.sleep(2)

a_view.body[0].view_object.update(text='look, the text changed')
renderer.display()
time.sleep(1)

My main goals with Plié is to keep it simple yet highly flexible, intuitive and Pythonic.

With those goals though comes a willingness to redesign the public facing API significantly for the purpose of increasing intuitiveness or decreasing boilerplate until at least the 1.0 release.

Currently implemented features:

  • Basic layouts, with a header, body and footer
  • rendering text to the screen, and updating text
  • formatting helpers for fitting text in limited or tall spaces

Planned features:

  • popup windows that can display text messages for a specified amount of time.
  • menus which contain multiple selectable items for interface control flow.
  • support for different border styles
  • solid asyncio event integration for handling a variety of events, including keyboard,

timers and voice commands (via speech_recognition)

Similar projects and libraries

  • Blessings by Eric Rose
  • Blessed by Jeff Quast
  • Curtsies by Thomas Ballinger (the spiritual predecessor to Plié and where the name derives from)
  • npyscreen by Nicholas Cole
  • urwid by Ian Ward et al

Plié is in early alpha currently The files with mockup or variations there of in the filename in the Plie/experimental directory, contain writings and experiments on the creation of various components of Plié.