如何使用箭头键在Python中导航菜单

时间:2016-09-14 11:00:45

标签: python menu

我正在创建一个基于文本的游戏,可以选择为他们的角色选择一个类。目前,玩家输入他们的选项,输入数字或类的名称。它运作良好。

但是,我想让玩家使用箭头键导航菜单,然后使用“回车”键选择一个选项。为了明确他们将要选择哪个选项,我还希望突出显示所选选项的文本。如果你曾经玩过ASCII roguelike,你就会知道它的样子。

以下是我目前用于课程的代码:

double

谢谢!

1 个答案:

答案 0 :(得分:2)

正如评论中已经提到的那样,你可以使用curses。这是一个小工作菜单,可以实现您想要的目标

import curses

classes = ["The sneaky thief", "The smarty wizard", "The proletariat"]


def character(stdscr):
    attributes = {}
    curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
    attributes['normal'] = curses.color_pair(1)

    curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_WHITE)
    attributes['highlighted'] = curses.color_pair(2)

    c = 0  # last character read
    option = 0  # the current option that is marked
    while c != 10:  # Enter in ascii
        stdscr.erase()
        stdscr.addstr("What is your class?\n", curses.A_UNDERLINE)
        for i in range(len(classes)):
            if i == option:
                attr = attributes['highlighted']
            else:
                attr = attributes['normal']
            stdscr.addstr("{0}. ".format(i + 1))
            stdscr.addstr(classes[i] + '\n', attr)
        c = stdscr.getch()
        if c == curses.KEY_UP and option > 0:
            option -= 1
        elif c == curses.KEY_DOWN and option < len(classes) - 1:
            option += 1

    stdscr.addstr("You chose {0}".format(classes[option]))
    stdscr.getch()


curses.wrapper(character)

最后一次调用getch只是为了在程序终止之前看到结果