Validus A dead simple Python data validation library.…
December 26, 2019
Python: 终端交互程序,在终端中创建交互式选择列表, create curses based interactive selection list in the terminal
pick是一个小型的python库,可帮助您在终端中创建基于curses的交互式选择列表。实际观看:
项目地址:https://github.com/wong2/pick
安装:
pip install pick
如果使用了Windows,那么还要另外执行一个语句:
pip install windows-curses
使用方法:
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, multi_select=True, min_selection_count=1) print(selected)
outputs: 输出
[('Java', 0), ('C++', 4)]
选件
options
:可供选择的选项列表title
:(可选)选项列表上方的标题indicator
:(可选)自定义选择指示器,默认为*default_index
:(可选)如果默认选择的选项不是第一个选项,请设置此项multi_select
:(可选),如果设置为True,则可以通过按空格键选择多个项目min_selection_count
:(可选)多选功能,用于在继续操作之前规定最少的选定项目options_map_func
:(可选)在显示之前将每个选项传递给您的映射函数
注册自定义处理程序
有时您可能需要注册特定键盘按键的自定义处理程序,可以使用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()
- 自定义处理程序将以
picker
实例作为参数来调用。 - 自定义处理程序应该返回两个元素的元组,或者返回None。
- 如果返回None,则选择器将继续运行,否则选择器将停止并返回元组。
选项图功能
如果您的选项不是您要显示的格式(例如字典),则可以传入一个映射函数,每个选项都将通过该函数运行。将显示该函数的返回值。
- 返回的所选选项将是原始值,而不是该
options_map_func
函数显示的返回结果。
选择选项图功能示例:
>>> 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)
本文:Python: 终端交互程序,在终端中创建交互式选择列表, create curses based interactive selection list in the terminal