Python终端实现上下箭头选择的选项列表及结果绑定方法
实现终端带上下箭头导航的选项选择功能(Python)
嘿,这个需求完全可以实现!我之前做过类似的趣味小工具,给你两种实用方案,分别对应「快速开发」和「零额外依赖」的场景:
方案一:用pick库(简单易上手)
这个第三方库专门用来做终端的交互式选择,一行代码就能搞定导航高亮,非常省心。
首先先安装库:
pip install pick
然后是示例代码,直接就能运行:
from pick import pick # 定义你的选项列表 options = ['XXXXX', 'YYYYY', 'ZZZZZ'] title = '嘿,请从以下选项中选择:' # 调用pick方法,返回选中的选项和对应的索引 selected_option, index = pick(options, title, indicator='➤', default_index=0) # 把选中的内容绑定到变量,这里直接用selected_option就行 user_choice = selected_option # 测试输出看看效果 print(f'你选中了:{user_choice},对应的序号是{index+1}')
运行后终端会显示带高亮的选项,用上下箭头切换,按回车确认,选中的内容直接存在user_choice变量里,完全符合你的需求~
方案二:用标准库curses(零额外依赖)
如果不想安装第三方库,Python自带的curses库也能实现,就是代码稍微多一点,但可控性更强。
示例代码如下:
import curses def select_option(stdscr): # 初始化界面 stdscr.clear() curses.curs_set(0) # 隐藏光标 options = ['1-XXXXX', '2-YYYYY', '3-ZZZZZ'] current_row = 0 while True: stdscr.clear() title = '嘿,请从以下选项中选择:' stdscr.addstr(0, 0, title) # 遍历选项,高亮当前选中的行 for idx, option in enumerate(options): if idx == current_row: stdscr.addstr(idx+1, 0, option, curses.A_REVERSE) # 反色高亮 else: stdscr.addstr(idx+1, 0, option) # 监听键盘输入 key = stdscr.getch() # 上下箭头切换选项 if key == curses.KEY_UP and current_row > 0: current_row -= 1 elif key == curses.KEY_DOWN and current_row < len(options)-1: current_row += 1 elif key == curses.KEY_ENTER or key in [10, 13]: # 回车确认 return options[current_row] # 启动curses应用 selected = curses.wrapper(select_option) # 绑定到变量 user_choice = selected print(f'你选中了:{user_choice}')
这个代码运行后,同样能用上下箭头导航选中高亮的选项,回车确认后,选中的内容会存在user_choice变量里,不需要额外安装任何库~
两种方案都能完美实现你的需求,要是追求快就用pick,要是想纯标准库就用curses,看你偏好啦!
内容的提问来源于stack exchange,提问作者Raeed Mndow
相关产品推荐
相关产品推荐

