【问题标题】:How to create autocomplete suggestion menu in interactive command line application?如何在交互式命令行应用程序中创建自动完成建议菜单?
【发布时间】:2019-09-20 05:54:47
【问题描述】:

假设我有这个代码:

choices = [
    'north',
    'south',
    'east',
    'west',
]

direction = input('Direction: ')

当使用python3 myprogram.py 从 bash shell 运行时,将提示用户输入一个方向。只有四个选项,所以我想在 vim 中向用户显示一个类似于此示例的自动完成建议菜单,除了该菜单应出现在 bash shell 中:

用户应该能够通过按 Tab 或上下箭头键来循环选择可用的选项。

如何使用 Python 构建出现在 bash shell 中的自动完成建议菜单?

我尝试了curses 模块,但它不适合,因为它会清除屏幕(类似于this problem)。我必须手动操作 ANSI 转义字符吗?

【问题讨论】:

  • curses 真的是你最好的选择。我不确定清除屏幕的问题在哪里。这是一个问题,因为您想在运行 python3 myprogram.py 之前保留以前的程序输出,还是因为您希望 myprogram.py 在运行 之后保留所有输入的输入。如果答案是前者,或许可以通过 gnu readline 来实现。如果答案是后者,那么myprogram.py 正在“清除”不应该出现的屏幕。
  • @Jason 我希望用户即使在显示菜单时也能看到 bash shell。您确定readline 可用于创建问题中所示的菜单吗?

标签: python bash autocomplete command-line-interface


【解决方案1】:

您可以尝试使用Python Prompt Toolkit,这是一个用于在 Python 中构建交互式命令行应用程序的库。

该库使添加交互式自动完成菜单变得容易:

(图片来源:pcgli

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多