def get_cpu():
return “这是CPU信息”
def get_mem():
return “这是内存信息”
def get_disk():
return “这是硬盘信息”
def get_all_db():
return “查看数据库中所有的库”
def execut_sql():
return “查询数据”
#服务器基本信息菜单
menu_server_info = [
[‘cpu 信息’, ‘’,get_cpu],
[‘mem 信息’, ‘’,get_mem],
[‘disk 信息’, ‘’,get_disk],
]
#数据库菜单
menu_mysql =[
[‘查看数据库中所有的库’, ‘’, get_all_db],
[‘查询数据’, ‘’, execut_sql]
]
def get_time():
import time
tpl = f""“当前日期:{time.strftime(”%F")}"""
return tpl
menu_list = [
[‘服务器基本信息’,menu_server_info,’’],
[‘MySQL工具箱’,menu_mysql,’’],
[‘当前日期’, ‘’, get_time],
# [‘some other’]
]
menu_dic = {}
current_menu_list = menu_list
up_menu_list = []
while True:
循环菜单类别,动态创建菜单字典
for i,item in enumerate(current_menu_list, 1):
menu_dic[str(i)]={'title':item[0],"next_menu": item[1], "func": item[2]}
for k , menu in menu_dic.items():
print(k,menu['title'])
while True:
inp = input("请输入选择[b 返回上一级菜单]>>:")
if not inp: break
# 返回上一级菜单
if inp == 'b':
if up_menu_list:
current_menu_list = up_menu_list.pop()
break
else:
break
# 判断用户输入的选择是否是字典的key的一员
if inp in menu_dic:
#尝试取出用户所选择的菜单的下一级菜单
next_menu_list = menu_dic[inp]['next_menu']
#判断是否有下一级菜单
if next_menu_list:
# 把当前菜单列表 current_menu_list 添加到上级
#菜单列表中,作为即将进入到菜单的上级菜单
up_menu_list.append(current_menu_list)
# 把下一级菜单列表赋值给 current_menu_list
# 让外层循环通过 current_menu_list 的新值
# 创建新字典的内容
current_menu_list = next_menu_list
# 清空原字典的内容
menu_dic.clear()
# 跳出本层循环
break
else:
# 程序走这里,表示当前菜单没有下一级菜单,就一定会有函数
# 取出函数对象
func = menu_dic[inp]['func']
# 调用函数得到返回值
ret = func()
print(ret)