This project implements a keyboard-controlled text user interface (TUI) for the terminal that allows users to navigate menus and nested subsections using simple key inputs (w, s, Enter, Esc). It provides a lightweight framework for building interactive CLI applications with features like menu navigation, subsections, progress bars, and confirmation prompts.
Project description
py_menu_tui
py_menu_tui is a lightweight terminal user interface (TUI) navigation framework for Python.
It allows developers to quickly build interactive command-line menus with keyboard navigation and nested subsections.
The interface is controlled using simple keys and is designed for Windows terminals using msvcrt.
Features
- Keyboard navigation (
w/s) - Nested menu sections
- Simple function binding to menu entries
- Scrollable menus
- Progress bar utility
- Confirmation prompts
- No external dependencies
Installation
Currently the package can be installed with:
pip install py_menu_tui
Controls
| Key | Action |
|---|---|
| w | Move up |
| s | Move down |
| Enter | Select option |
| Esc | Go back |
| Ctrl+C | Exit program |
Example
from py_menu_tui import UserInterface
def hello():
print("Hello World")
ui = UserInterface()
ui.setup(
["Say Hello"],
[hello]
)
ui.begin()
Creating Subsections
# Create a subsection
ui.add_sub_section(
["Option 1", "Option 2"],
[func1, func2],
section="Settings"
)
# Create a nested subsection inside "Settings"
ui.add_sub_section(
["Option 1", "Option 2"],
[func1, func2],
section="Audio",
uppersection="Settings"
)
Utilities
#Progressbar
from py_menu_tui import progressbar
progressbar(50)
#Clear Terminal
from py_menu_tui import clear
clear()
#Confirmation Prompt
from py_menu_tui import confirm
if confirm("Continue?"):
print("Confirmed")
#Wait for user input
ui.hold()
# Wait 5 seconds
ui.hold(time=5)
# Custom message and wait for input
ui.hold(msg="Press enter to continue")
Requirements
- Python 3+
- Windows terminal (uses
msvcrt) - No external dependencies
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters