用 Simple_term_menu 创建更好的python菜单

安装

1pip install simple_term_menu

⚠️ 不支持windows 这个菜单库使用非常简单,只需要传入一个列表,就可以生成一个菜单,返回值就是选择的菜单项的索引。

  • 支持J K/⬆️ ⬇️ 键移动
  • 支持/斜杠搜索
  • 支持快捷键(传入的 string 如 [q] 退出 ,q 就变成快捷键了)
  • 好看!
  • 还有更多功能,我没有仔细研究,参考>这里<

封装成函数,方便调用

 1from simple_term_menu import TerminalMenu
 2def menu(choices:list):
 3    terminal_menu = TerminalMenu(choices,title="扫描结果转换XML工具 v1.0 (230208)\n---",show_search_hint=True)
 4    index = terminal_menu.show()
 5
 6    print("执行", choices[index])
 7    if choices[index] == "[h] 文档":
 8        import webbrowser
 9        webbrowser.open('http://example.com')  
10        return 0
11    if choices[index] == "[q] 退出":
12        exit()
13    return index + 1 # 返回结果,从1开始

main 函数调用

1if __name__ == '__main__':
2    while True:
3        # 获取功能列表,显示菜单
4        choices_str = open('menu.md', 'r', encoding='utf-8').read()
5        choices =choices_str.splitlines()
6        choice_index = menu(choices)

其实一开始选择用md是因为写序号的话可以自动排序,但是加了序号和快捷键之后,就不美观了,所以把序号删除了。

加载菜单 menu.md

1长亭xray(主机+应用) html 1->1
2长亭xray(主机+应用) html 多->1
3绿盟(主机) <ip>.html 1->1
4绿盟(主机) <ip>.html 多->1
5安恒新版 (应用) html 1->1
6Nessus csv(utf-8) 1->1
7Nessus csv(gb18030) 1->1
8[h] 文档
9[q] 退出

效果图:

对了这个东西还有个坑的地方,在pycharm运行的时候需要设置一下才能正常使用(要开启模拟终端):


Dbdiagram.io,数据库设计的好选择
我写了一个python库:dumb_meun