Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的控制台选择菜单_Python_Algorithm - Fatal编程技术网

python中的控制台选择菜单

python中的控制台选择菜单,python,algorithm,Python,Algorithm,我想用python创建一个控制台选择菜单,如下所示: Choose an option: > 1. Do something 1 < 2. Do something 2 3. Do something 3 4. Do something 4 Choose an option: 1. Do something 1 > 2. Do something 2 < 3. Do something 3 4. Do something 4 选择一个选项:

我想用python创建一个控制台选择菜单,如下所示:

Choose an option:
> 1. Do something 1 <
  2. Do something 2
  3. Do something 3
  4. Do something 4
Choose an option:
  1. Do something 1 
> 2. Do something 2 <
  3. Do something 3
  4. Do something 4
选择一个选项:
> 1. 做点什么<
2.做点什么2
3.做点什么
4.做点什么
如果我按向上箭头键,什么也不会发生。如果我按下向下键,小于和大于符号会像这样上下移动:

Choose an option:
> 1. Do something 1 <
  2. Do something 2
  3. Do something 3
  4. Do something 4
Choose an option:
  1. Do something 1 
> 2. Do something 2 <
  3. Do something 3
  4. Do something 4
选择一个选项:
1.做点什么
> 2. 做点什么2<
3.做点什么
4.做点什么
但是我不知道哪个Python3模块会帮助我抓住按键而不是
input()
,我想知道如何正确地对齐它

我的对齐解决方案是打印空格(可能?),当按键事件被捕获时,控制台将被清除,并再次打印选择菜单,而不是更改/修改字符串


此外,选项将从列表中获取,这意味着此菜单是可扩展的

您必须检测键盘键。正如这个答案所提到的,Python有一个模块

您可以使用以下命令安装它

pip install keyboard
下面是它的工作原理

  • 定义菜单编号范围,在本例中为1到4
  • 设置一个默认的选定菜单,并用我们定义的数字表示它,这样当用户打开菜单时它就会出现,在本例中为1
  • 如果用户按向上键,则您已减小所选菜单号,除非它位于范围的第一个元素上。反之亦然,对于向下键,您已增加所选菜单编号,除非它位于范围的最后一个元素上
导入键盘
已选择=1
def显示菜单():
全球选定
打印(“\n”*30)
打印(“选择一个选项:”)
对于范围(1,5)内的i:

print(“{1}{0}.Do something{0}{2}.format(i,“>”if selected==i else”“”上述过程会使代码更混乱,需要root权限才能在Linux上运行。 最好的方法是使用查询

pip3安装查询

并使用以下代码

import enquiries

options = ['Do Something 1', 'Do Something 2', 'Do Something 3']
choice = enquiries.choose('Choose one of these options: ', options)

print(choice)

对于未来的读者:自2020年起,它不支持Windows文件“{user}\AppData\Local\Programs\Python37\lib\curses\u init\uuuuz.py”,第13行,在from\u curses import*ModuleNotFoundError:没有名为“\u curses”的模块