Tacotui

Simple terminal coloring and text-based user interface

This Python package is meant to be a simple, light-weight, cross-platform method for manipulating the terminal and generating basic text-based user interfaces. If you just need easy control of terminal coloring, or a few simple widgets that are one step above using input(), this module is for you.

  • Cross platform. Works directly in the Windows 10 terminal, most Linux terminals, and OSX.
  • Provides easy access functions for setting terminal colors and position.
  • Widgets that provide a “linear” user experience. User works with one widget at a time.
  • Easy and fast to program. Instead of writing objects/classes, everything is defined using function calls.
  • Different color schemes for widgets.
  • Pure python, no dependencies.

While packages like curses, and its wrappers such as urwid or npyscreen, are much more powerful and flexible, this has a low learning curve and works cross-platform with no additional setup. It is meant for beginning Python programmers (aka engineers who use Python but don’t have time to become computer scientists) who want a quick method for generating a usable linear user interface, with no requirements for object-oriented programming.

A single function call is all that’s needed to make an entry form such as this. The function returns a list of the entered parameters.

_images/form.png

Installation

Tacotui can be installed from pip:

pip install tacotui

Source code is available from Bitbucket.

This package works with Python 3.6 or higher on terminals that support ANSI escape codes. This includes Mac terminal, Windows 10 terminal, and most Linux terminals.

Tacotui consists of three modules: screen for screen manipulation such as cursor positioning, color for setting background and foreground text colors, and widgets with tools such as message boxes, list selection boxes, and forms.

Run the demos to see tacotui in action:

import tacotui
tacotui.demo.color()
tacotui.demo.widgets()
tacotui.demo.plot()
tacotui.demo.game()