python中的控制台选择菜单

新手上路,请多包涵

我有一个想法在 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 3 模块可以帮助我捕捉按键而不是 input() ,我不知道如何正确对齐它。

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

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

原文由 minhperry 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

你必须检测键盘键。因为这个 检测 python 中的按键? 提到的答案,Python 有一个 键盘 模块。

您可以使用这些命令安装它

pip install keyboard

这是它的工作原理

  • 定义一个菜单编号范围,在本例中是 1 到 4
  • 设置一个默认选中的菜单,用我们定义的数字表示,这样当用户打开菜单时就会出现,在本例中是1
  • 如果用户按下 向上 键,则您已减少所选菜单编号,除非它位于范围的第一个元素上。反之亦然,对于 向下 键,您已经增加了所选菜单编号,除非它已经在范围的最后一个元素上。 “` import keyboard

selected = 1

def show_menu(): global selected print(”\n” * 30) print(“Choose an option:”) for i in range(1, 5): print(“{1} {0}. Do something {0} {2}”.format(i, “>” if selected == i else “ “, “<” if selected == i else “ “))

def up(): global selected if selected == 1: return selected -= 1 show_menu()

def down(): global selected if selected == 4: return selected += 1 show_menu()

show_menu() keyboard.add_hotkey(‘up’, up) keyboard.add_hotkey(‘down’, down) keyboard.wait() “`

样本

原文由 Andra 发布,翻译遵循 CC BY-SA 4.0 许可协议

我写了一个 Python 模块 pick 为此,它有一个易于使用的 api 并支持 Windows

https://github.com/wong2/pick

 from pick import pick

title = 'Please choose your favorite programming language: '
options = ['Java', 'JavaScript', 'Python', 'PHP', 'C++', 'Erlang', 'Haskell']

option, index = pick(options, title, indicator='=>', default_index=2)

在此处输入图像描述

原文由 wong2 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题