news 2026/6/25 14:52:52

Python之rhq-menu包语法、参数和实际应用案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python之rhq-menu包语法、参数和实际应用案例

Python rhq-menu 包完整使用指南

rhq-menu轻量级、纯Python实现的交互式命令行菜单工具包,专为简化终端交互式菜单开发设计,无需依赖复杂GUI库,仅通过终端即可实现单选、多选、导航菜单、嵌套菜单等功能,适配Windows、macOS、Linux全平台,是脚本工具、CLI程序、自动化脚本交互的首选库。

一、核心功能

  1. 基础单选菜单:终端单选选择,支持上下箭头导航、回车确认
  2. 多选菜单:支持空格勾选、全选/反选,返回多选结果列表
  3. 嵌套/层级菜单:支持子菜单、多级导航,适合复杂功能分类
  4. 自定义样式:可修改选中色、提示文字、光标符号、菜单标题
  5. 默认选中:支持预设默认选项,提升操作效率
  6. 纯终端无依赖:无需安装额外系统库,轻量高效
  7. 快速返回值:选择后直接返回选项文本/索引,便于业务逻辑处理

二、安装方法

1. 标准pip安装(推荐)

pipinstallrhq-menu

2. 国内镜像加速安装

pipinstallrhq-menu-ihttps://pypi.tuna.tsinghua.edu.cn/simple

3. 验证安装

执行以下命令无报错即安装成功:

importrhq_menuprint(rhq_menu.__version__)

三、核心语法与全参数解析

rhq-menu核心提供3个核心函数,覆盖绝大多数使用场景:

  1. rhq_menu.menu()单选菜单(最常用)
  2. rhq_menu.checkbox()多选菜单
  3. rhq_menu.submenu()嵌套子菜单

1. 单选菜单menu()完整语法

rhq_menu.menu(options:list,# 必选:菜单选项列表,元素为字符串title:str=None,# 可选:菜单标题,默认无标题prompt:str="请选择: ",# 可选:底部提示文字default:int=0,# 可选:默认选中项的索引,默认0(第一个)color:str="green",# 可选:选中项颜色,支持red/green/blue/yellowcursor:str=">",# 可选:选中光标符号return_index:bool=False# 可选:True返回索引,False返回选项文本)

2. 多选菜单checkbox()完整语法

rhq_menu.checkbox(options:list,# 必选:选项列表title:str=None,# 可选:标题prompt:str="请选择(空格勾选,回车确认): ",# 提示文字checked_color:str="green",# 勾选颜色cursor:str=">",# 光标符号return_index:bool=False# True返回索引列表,False返回文本列表)

3. 嵌套菜单submenu()完整语法

rhq_menu.submenu(menu_data:dict,# 必选:嵌套菜单字典(key=标题,value=子选项)title:str="主菜单",# 主菜单标题prompt:str="请选择: ")

四、8个实际应用案例(可直接运行)

案例1:基础单选菜单(工具启动选择)

场景:自动化脚本启动选项,选择执行功能

importrhq_menu# 定义选项options=["数据备份","数据恢复","系统清理","退出程序"]# 调用单选菜单result=rhq_menu.menu(options,title="=== 系统工具集 ===",color="blue")# 业务逻辑处理print(f"\n你选择了:{result}")ifresult=="退出程序":print("程序已退出")

案例2:带默认选中的单选菜单

场景:常用选项默认选中,减少操作步骤

importrhq_menu options=["Python","Java","C++","JavaScript"]# 默认选中第3个选项(索引2)C++result=rhq_menu.menu(options,title="选择编程语言",default=2,prompt="请确认你的选择: ")print(f"选中语言:{result}")

案例3:多选菜单(文件批量选择)

场景:批量选择文件、批量执行任务

importrhq_menu files=["报告.docx","数据.xlsx","图片.png","日志.log"]# 多选菜单selected=rhq_menu.checkbox(files,title="=== 批量选择文件 ===",checked_color="yellow")print(f"\n选中的文件:{selected}")print(f"共选择{len(selected)}个文件")

案例4:返回索引的菜单(精准逻辑控制)

场景:通过索引判断业务,避免文本匹配错误

importrhq_menu actions=["查询","新增","修改","删除"]# return_index=True 返回选中项索引index=rhq_menu.menu(actions,return_index=True,title="数据操作")ifindex==0:print("执行查询操作")elifindex==3:print("执行删除操作")

案例5:嵌套层级菜单(多级功能导航)

场景:复杂工具、管理系统的多级菜单

importrhq_menu# 定义嵌套菜单字典menu_config={"用户管理":["添加用户","删除用户","修改权限"],"系统设置":["网络配置","存储配置","安全设置"],"日志查看":["运行日志","错误日志","登录日志"]}# 调用嵌套菜单result=rhq_menu.submenu(menu_config)print(f"\n最终选择:{result}")

案例6:自定义光标与样式(个性化菜单)

场景:定制化CLI工具,提升视觉体验

importrhq_menu options=["开始游戏","游戏设置","关于我们"]# 自定义光标为箭头+颜色result=rhq_menu.menu(options,title="=== 游戏控制台 ===",cursor="→",color="red",prompt="请输入操作: ")print(f"你的操作:{result}")

案例7:结合循环的持久化菜单(不退出程序)

场景:常驻运行的脚本菜单,选择后返回主菜单

importrhq_menuwhileTrue:options=["任务1","任务2","任务3","退出"]res=rhq_menu.menu(options,title="=== 常驻任务菜单 ===")ifres=="退出":print("程序退出")breakprint(f"正在执行:{res}...\n")

案例8:菜单+文件操作实战(完整工具)

场景:通过菜单选择,执行文件读写操作

importrhq_menudefread_file():withopen("test.txt","r",encoding="utf-8")asf:print("文件内容:",f.read())defwrite_file():content=input("输入写入内容:")withopen("test.txt","w",encoding="utf-8")asf:f.write(content)print("写入成功")# 菜单调用opt=["读取文件","写入文件","退出"]whileTrue:res=rhq_menu.menu(opt,title="文件操作工具")ifres=="读取文件":read_file()elifres=="写入文件":write_file()else:break

五、常见错误与解决方案

错误1:ModuleNotFoundError: No module named 'rhq_menu'

  • 原因:未安装包 / 安装环境与运行环境不一致
  • 解决
    1. 重新执行pip install rhq-menu
    2. 确认使用的Python解释器与pip对应(如conda环境需激活后安装)

错误2:TypeError: menu() missing 1 required positional argument: 'options'

  • 原因:未传入必选参数options(菜单选项列表)
  • 解决:必须传递非空列表作为菜单选项,如menu(["选项1", "选项2"])

错误3:菜单显示乱码(Windows终端)

  • 原因:终端编码不支持UTF-8
  • 解决
    1. Windows终端执行:chcp 65001
    2. 或使用VS Code终端、PowerShell运行

错误4:多选菜单无法勾选 / 回车无响应

  • 原因:终端不支持交互式按键(如部分轻量终端)
  • 解决:使用系统原生终端(CMD、Terminal),避免IDE内置极简终端

错误5:IndexError: list index out of range

  • 原因default参数设置的索引超出选项列表长度
  • 解决default必须 ≥0 且 < 选项总数

六、使用注意事项

  1. 选项格式要求options必须是非空字符串列表,不支持数字、None等类型
  2. 终端兼容性:仅支持交互式终端,不支持非交互式环境(如后台脚本、CI/CD无终端环境)
  3. 嵌套菜单限制submenu()仅支持二级嵌套(主菜单+子菜单),不支持三级及以上深度
  4. 颜色支持:仅支持red/green/blue/yellow4种标准色,无自定义RGB
  5. 返回值规范
    • 单选:返回字符串/单个索引
    • 多选:返回列表/索引列表
  6. 中文支持:完美支持中文选项、标题,无乱码问题(UTF-8环境)
  7. 版本兼容:支持Python 3.6及以上版本,不兼容Python2

总结

  1. rhq-menu轻量无依赖的终端交互式菜单库,核心支持单选、多选、嵌套菜单三大能力
  2. 安装仅需pip install rhq-menu,语法简洁,参数清晰,零基础可上手
  3. 8个实战案例覆盖工具开发、文件操作、批量选择、常驻脚本等全场景
  4. 核心避坑点:确保选项为字符串列表、使用交互式终端、default索引不越界

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 8:53:32

从高管离职看企业治理:天宇朗通案例中的平衡术与人才激励

1. 从“山寨教母”到“平衡大师”&#xff1a;荣秀丽与天宇朗通的崛起密码在2000年代中后期的中国手机江湖里&#xff0c;荣秀丽和她的天宇朗通是一个无法绕开的传奇。当大多数人对“山寨机”的印象还停留在华强北的档口和粗糙的仿制品时&#xff0c;荣秀丽已经用一套独特的商业…

作者头像 李华
网站建设 2026/6/14 6:55:33

3步实现Mac Boot Camp驱动的自动化部署:告别繁琐手动操作

3步实现Mac Boot Camp驱动的自动化部署&#xff1a;告别繁琐手动操作 【免费下载链接】brigadier Fetch and install Boot Camp ESDs with ease. 项目地址: https://gitcode.com/gh_mirrors/bri/brigadier 还在为Mac安装Windows系统后寻找驱动的繁琐过程而烦恼吗&#x…

作者头像 李华
网站建设 2026/6/14 6:55:53

TegraRcmGUI终极指南:掌握Switch RCM注入的完整解决方案

TegraRcmGUI终极指南&#xff1a;掌握Switch RCM注入的完整解决方案 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Nintendo Switch设…

作者头像 李华
网站建设 2026/6/15 18:58:43

抖音无水印批量下载器:5分钟快速上手完整指南

抖音无水印批量下载器&#xff1a;5分钟快速上手完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…

作者头像 李华
网站建设 2026/6/14 6:55:53

STM32F2 ADC配置实战:从固件库汉化到多通道DMA采集避坑指南

1. 项目概述与初衷作为一名在嵌入式领域摸爬滚打了十多年的老工程师&#xff0c;我深知入门STM32时面对全英文官方文档和固件库的那种“望而生畏”的感觉。尤其是对于ADC&#xff08;模数转换器&#xff09;这类模拟与数字世界交汇的核心外设&#xff0c;理解其配置寄存器、工作…

作者头像 李华