注意:虽然我在 Inquirer 上提供了很多信息,但我很确定其中大部分都不会适用(只是为了安全)。对于我关于诅咒的实际问题,它在底部。
我在 Python 3 中使用 Inquirer 模块来允许用户从列表中选择一个值。我运行这个:
import inquirer
choice = inquirer.prompt([inquirer.List("size",message="Which size do you need?",choices=["Large", "Medium", "Small"])
我得到了这个:
[?] What size do you need?: Medium
Large
> Medium
Small
使用向上和向下键,我可以更改我的选择,然后按 Enter 进行选择,之后“选择”变量包含我选择的值。问题是:一旦选择完成,选择仍然显示。我想在完成后删除它们。我目前正在使用 ANSI 转义码在完成后从屏幕上删除选择,其中 x 是选择的数量:
import sys
for i in range (x+1):
sys.stdout.write('\x1b[1A')
sys.stdout.write('\x1b[2K')
将打印的文本保留为:
[?] What size do you need?: Medium
问题是,ANSI 转义码不是通用的。我想使用适用于所有终端的解决方案,最好是curses,但curses对新用户不是很友好,所以我想知道是否有人知道如何使用curses“删除当前位置上方的x行”。谢谢!