You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Git Bash环境Python箭头键导航CLI菜单实现方案咨询

解决Git Bash(Mingw-w64)中Python箭头键导航CLI菜单的问题

修复windows-curses在Git Bash的适配问题

Git Bash的终端仿真特性会导致windows-curses触发"Redirection is not supported"错误,可通过以下方式解决:

  • 用winpty包装运行命令:在Git Bash中执行脚本时,使用winpty python your_script.py替代直接运行python your_script.py,winpty会模拟标准终端环境,让curses正确识别输入输出。
  • 配置TERM环境变量:执行echo $TERM检查当前值,若不是xterm-256color,在~/.bashrc文件中添加export TERM=xterm-256color,重启Git Bash后生效。

替代库方案:使用prompt-toolkit

prompt-toolkit跨终端兼容性极强,原生支持箭头键导航,无需额外配置即可在Git Bash中正常工作。

示例代码:

from prompt_toolkit.shortcuts import select

def main():
    menu_options = ["项目初始化", "配置修改", "查看日志", "退出"]
    selected_item = select(
        title="=== 操作菜单 ===",
        choices=menu_options,
    )
    print(f"已选择: {selected_item}")

if __name__ == "__main__":
    main()

无依赖手动实现

若不想引入第三方库,可直接捕获终端按键的转义序列实现箭头导航:

import sys

def capture_key():
    # 捕获按键,处理箭头键的ESC转义序列
    key = sys.stdin.read(1)
    if key == '\x1b':
        key += sys.stdin.read(2)
    return key

def render_menu(options, active_index):
    # 清屏并渲染菜单
    print("\033c", end="")
    print("请使用箭头键选择,回车确认:")
    for idx, opt in enumerate(options):
        indicator = "> " if idx == active_index else "  "
        print(f"{indicator}{opt}")

def main():
    options = ["创建文件", "删除目录", "备份数据", "退出"]
    current_idx = 0
    while True:
        render_menu(options, current_idx)
        key = capture_key()
        
        if key == '\x1b[A' and current_idx > 0:  # 上箭头
            current_idx -= 1
        elif key == '\x1b[B' and current_idx < len(options)-1:  # 下箭头
            current_idx += 1
        elif key == '\r':  # 回车键
            if options[current_idx] == "退出":
                break
            print(f"\n已执行: {options[current_idx]}")
            input("\n按回车返回菜单...")

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者Spedwards

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:56:54