首页 > 解决方案 > 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(),并且不知道如何正确对齐它。

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

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

标签: pythonalgorithm

解决方案


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

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

pip install keyboard

这是它的工作原理

  • 定义一个菜单编号范围,在本例中为 1 到 4
  • 设置一个默认选择的菜单,并用我们定义的数字来表示,所以当用户打开菜单时它会出现,在本例中为 1
  • 如果用户按下Up键,您将减少选定的菜单编号,除非它位于范围的第一个元素上。反之亦然,对于Down键,您可以递增所选菜单编号,除非它位于范围的最后一个元素上。
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()

样本


推荐阅读