Create TUI on Python
In this article I will talk about the npyscreen — library for creating console applications.
The package is available for download on PyPI.
sudo pip3 install npyscreen
Npyscreen uses 3 basic types of objects:
- Application objects — provide start and end of the application, create forms, process events.
Basically used NPSAppManaged and StandardApp (with event support).
- Form objects is the area of the screen that contains widgets.
- FormBaseNew — Empty forms.
- Form — Form with the button «ok».
- ActionForm — Form with two buttons: “ok” and “cancel”.
- FormWithMenus — Form that supports the menu.
- Widget Objects contains various elements located on the forms
- Textfield, PasswordEntry, MultiLineEdit, FilenameCombo —Input forms.
- DateCombo, ComboBox, FilenameCombo — Drop-down lists.
- MultiSelect, MultiSelect, BufferPager — Picking Options.
- Slider, TitleSlider —Sliders.
More information can be found on the official website with the documentation.
The best way to create forms is to inherit them from default classes.
You can override the default methods to extend the functionality of the application.
By default, widgets use the maximum possible space.
To use custom coordinates, you need to change the parameters:
- relx, rely — the position of the widget relative to the origin of the form.
- width, height, max_width, max_height — limit of the widget size.
Boxes and custom highlightings
To make a wrapper in the form of boxing is simple —you need create a class inherited from BoxTitle and to override the attribute _contained_widget, putting their the widget that will be inside.
There are several default color themes available in npyscreen. If you want, you can add your own. You can install them using the setTheme method.
Customize text highlighting is not so simple. I expanded the functionality of the library to make it work.
Events and Handlers
The StandardApp class in npyscreen supports the event queue.
For the keypress handlers used add_handlers method.