Skip to main content

A pure Python terminal menu system with quick navigation and custom layouts.

Project description

Pure Python Menu (PPMenu)

A simple, powerful, and fast terminal menu system for Python.


What is PPMenu?

PPMenu is a lightweight pure Python menu builder focused on:

  • Quick navigation with arrow keys, vim keys, and quick jumps
  • ALT+key quick-jumps for professional control
  • Full customization: titles, carts, dynamic displays
  • No external dependencies — works everywhere!

Built for terminal applications, system tools, games, shops,
and anywhere a clean text menu is needed.


Features

  • 🧭 Navigate with arrow keys, hjkl, quick letters
  • ⚡ Jump instantly with quick letters ([f] File, [o] Open, etc.)
  • ✨ ALT+Quick-Jump support for professional Vim users (only h/j/k/l)
  • 🎨 Custom color schemes (titles, selected items, submenus)
  • 🛠️ Full extensibility: override parts of the display
  • 🧹 100% clean PEP8 code, full type hints
  • 🔥 Fully covered with real Pytest tests

Installation

Option 1: Local Project

Clone the repository:

git clone https://github.com/sergey-samoylov/ppmenu.git
cd ppmenu/

Install development dependencies (optional, for testing):

pip install pytest

Quick Usage Example

Create a quick menu in seconds:

from ppmenu import PPM

def say_hello():
    print("Hello, world!")

menu_structure = {
    '[h] Hello': say_hello,
    '[q] Quit': lambda: exit(0),
}

menu = PPM(menu_structure, title='My Simple Menu')
menu.run()

✅ Arrow keys and Vim-keys move.
✅ Press h to run "Hello".
✅ Press q to quit.


Development & Testing

Run all tests:

pytest

(Optional: add pytest.ini with [pytest] pythonpath = . for clean imports.)


Contributing

Contributions are welcome!
Feel free to:

  • Open issues
  • Suggest improvements
  • Submit pull requests

Let's make PPMenu even better together!

📢Please follow the Code Style Guide before submitting pull requests.


License

This project is licensed under the GNU General Public License v3.0 (GPLv3).

See LICENSE file for details.


Author

Made with ❤️ by Sergey Samoylov

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ppmenu-0.1.0.tar.gz (44.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ppmenu-0.1.0-py3-none-any.whl (30.5 kB view details)

Uploaded Python 3

File details

Details for the file ppmenu-0.1.0.tar.gz.

File metadata

  • Download URL: ppmenu-0.1.0.tar.gz
  • Upload date:
  • Size: 44.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ppmenu-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3442431f4b5f753d7a90e2b6aeaa34e15583b174182cdf1397fdc6308f1ca4c5
MD5 06f6edf311802f46cfa9e5676bac8145
BLAKE2b-256 c9485be5da51855726c8d1ae269c84fb4e5b5fa83f3cd367c64a800a2174cef6

See more details on using hashes here.

File details

Details for the file ppmenu-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ppmenu-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 30.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ppmenu-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca3c96d59f08a1b4f6f736f0cbaf3adb79e0d70079178c51836186d2a9b40344
MD5 a24310f8b84cd3bc6cb23544e6329f19
BLAKE2b-256 a70939c6569daff43bd553ef01e9526551e0424fb0321523b762d182bc59aad7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page