Python: 终端交互程序,在终端中创建交互式选择列表, create curses based interactive selection list in the terminal

 

pick是一个小型的python库,可帮助您在终端中创建基于curses的交互式选择列表。实际观看:

Python: 终端交互程序,在终端中创建交互式选择列表, create curses based interactive selection list in the terminal
Python: 终端交互程序,在终端中创建交互式选择列表, create curses based interactive selection list in the terminal

 

项目地址: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_handlerAPI:

>>> 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

Leave a Reply