Pick an option in the terminal with a simple GUI
Project description
pick is a small python library to help you create curses based interactive selection list in the terminal.
Installation
$ pip install pick
Usage
pick comes with a simple api:
>>> from pick import pick >>> title = 'Please choose your favorite programming language: ' >>> options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell'] >>> option, index = pick(options, title) >>> print(option) >>> print(index)
outputs:
>>> C++ >>> 4
pick multiselect example:
>>> from pick import pick >>> title = 'Please choose your favorite programming language (press SPACE to mark, ENTER to continue): ' >>> options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell'] >>> selected = pick(options, title, multiselect=True, min_selection_count=1) >>> print(selected)
outputs:
>>> [('Java', 0), ('C++', 4)]
Options
options: a list of options to choose from
title: (optional) a title above options list
indicator: (optional) custom the selection indicator, defaults to *
default_index: (optional) set this if the default selected option is not the first one
multiselect: (optional), if set to True its possible to select multiple items by hitting SPACE
min_selection_count: (optional) for multi select feature to dictate a minimum of selected items before continuing
options_map_func: (optional) a mapping function to pass each option through before displaying
Register custom handlers
Sometimes you may need to register custom handlers for specific keyboard keys, you can use the register_custom_handler API:
>>> from pick import Picker >>> title, options = 'Title', ['Option1', 'Option2'] >>> picker = Picker(options, title) >>> def go_back(picker): ... return None, -1 >>> picker.register_custom_handler(ord('h'), go_back) >>> option, index = picker.start()
the custom handler will be called with the picker instance as it’s parameter.
the custom handler should either return a two element tuple, or None.
if None is returned, the picker would continue to run, otherwise the picker will stop and return the tuple.
Options Map Function
If your options are not in a format that you want displayed (such as a dictionary), you can pass in a mapping function which each option will be run through. The return value of the function will be displayed.
the selected option returned will be the original value and not the displayed return result from the options_map_func function.
pick options map function example:
>>> from pick import pick >>> title = 'Please choose an option: ' >>> options = [{'label': 'option1'}, {'label': 'option2'}, {'label': 'option3'}] >>> def get_label(option): return option.get('label') >>> selected = pick(options, title, indicator='*', options_map_func=get_label) >>> print(selected)
displays:
Please choose an option: * option1 option2 option3
outputs:
>>> ({ 'label': 'option1' }, 0)
Community Projects
pickpack: A fork of pick to select tree data.
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
File details
Details for the file pick-1.3.1.tar.gz
.
File metadata
- Download URL: pick-1.3.1.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.0 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b30593a0518ae049d457e710082bcf010a9516fa7b50805bb46f3beff3eacdc |
|
MD5 | 104029314d0af0fc8a446390fb4cb35b |
|
BLAKE2b-256 | a03053a84f9e95935bc4d97ea4ab6d5b4a3971c85345924c5ce105a75783e36b |
File details
Details for the file pick-1.3.1-py3-none-any.whl
.
File metadata
- Download URL: pick-1.3.1-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.0 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c656ccde2a1ef191bf510d19d5634093d817c61a8ebfb8dede44cab2cf163a5 |
|
MD5 | 4e60c56e3f360578d2f6f973273cf769 |
|
BLAKE2b-256 | 00ea4662aadf37cfa2b6ffa2807f0a92ea3b2f1ded516a455309871f77625f6a |