README

python 窗口 多菜单 python 多级菜单_python 窗口 多菜单

python 窗口 多菜单 python 多级菜单_ci_02

1 # README.md #
 2 
 3 day001-work-2
 4 
 5         @南非波波
 6 
 7 功能实现:多级菜单展示
 8 
 9 流程图:
10 ![](http://i.imgur.com/VTPPhZU.jpg)
11 
12 程序实现:
13 
14     1.文件说明:
15         main.py:主程序入口
16         welcome.py:程序首页展示内容
17         citylist.py:程序的字典内容
18         checkinput.py:检查用户输入是否符合规定,设置二三级菜单展示函数
19     2.设置功能函数:
20         welcome.WelcomeInfo():首页函数,调用checkinput.CheckInputOne(Choose)函数,根据用户输入返回相应值或者调用相应函数
21         welcome.GoBack(Choose):返回函数,该函数最终设计目标实现多级返回,但目前只实现返回到首页
22         checkinput.CheckInputOne(Choose):函数判断用户在第一次输入的值是否异常,根据用户输入情况进行相应值返回或者调用相应函数
23         checkinput.InputIfOne(Choose):调用checkinput.ShowInfo(Area)函数展示地区下面的省份,并且多层循环、遍历字典、列表展示二三层菜单。期间调用checkinput.ChooseInputTwo(Choose)函数进行用户输入的判断,并返回True|Flase值.
24     3.主函数入口:
25         import welcome
26         #main
27         if __name__ =="__main__":
28             welcome.WelcomeInfo()
29 
30 代码地址:
31 
32     https://github.com/swht/projects/tree/master/day01/work-2
33 


README

流程图:

  

python 窗口 多菜单 python 多级菜单_python_03

程序代码:

main.py

python 窗口 多菜单 python 多级菜单_ci_02

1 #!/usr/local/env python3
 2 '''
 3 Author:@swht
 6 '''
 7 import welcome
 8 
 9 #main
10 if __name__ =="__main__":
11     welcome.WelcomeInfo()


main.py

welcome.py


python 窗口 多菜单 python 多级菜单_ci_02

1 #!/usr/local/env python3
 2 '''
 3 Author:@swht
 6 '''
 7 import citylist
 8 import checkinput
 9 import sys,time
10 #登录欢迎界面
11 def WelcomeInfo():
12     for i in range(0,3):
13         Choose = input('''
14             ===================================================
15                                 欢迎来到中国!
16             ===================================================
17             [11]华北地区   [12]东北地区   [13]华东地区   [14]华中地区
18             [15]华南地区   [16]西南地区   [17]西北地区   [18]特别行政区
19             [19]退出
20             请选择相应指令:''').strip()
21         checkinput.CheckInputOne(Choose)
22     GoBack("地区")
23 
24 #错误次数已达3,程序退出
25 def GoBack(Choose):
26     if Choose == "地区":
27         print("你的输入错误次数已达3次,系统将退出!")
28         time.sleep(1)
29         sys.exit(1)


welcome.py

citylist.py

python 窗口 多菜单 python 多级菜单_ci_02

1 #!/usr/local/env python3
 2 '''
 3 Author:@swht
 6 '''
 7 
 8 CityList ={
 9 "华北地区":{
10     "北京市":['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县'],
11     "天津市":['和平区', '河东区', '河西区', '南开区', '河北区', '红桥区', '塘沽区', '汉沽区', '大港区', '东丽区', '西青区', '津南区','北辰区', '武清区', '宝坻区', '宁河县', '静海县', '蓟县'],
12     "河北省":['石家庄市','秦皇岛市'],
13     "山西省":['太原市','大同市'],
14     "内蒙古自治区":['呼和浩特市','包头市']
15     },
16 "东北地区":{
17     "辽宁省":["铁岭市","阜新市","朝阳市","沈阳市"],
18     "吉林省":['长春市','吉林市','辽源市'],
19     "黑龙江省":['哈尔滨市','齐齐哈尔市']
20     },
21 "华东地区":{
22     "上海市":["浦东新区","长宁区","宝山区","青浦区"],
23     "江苏省":['南京市','徐州市'],
24     "浙江省":['杭州市','宁波市'],
25     "安徽省":['合肥市','淮南市'],
26     "福建省":['福州市','厦门市'],
27     "江西省":['南昌市','景德镇市'],
28     "山东省":["济南市","青岛市","潍坊市","德州市"]
29     },
30 "华中地区":{
31     "河南省":['郑州市','洛阳市'],
32     "湖北省":['武汉市','荆门市'],
33     "湖南省":['长沙市','株洲市']
34     },
35 "华南地区":{
36     "广东省":['广州市','深圳市'],
37     "海南省":['海口市','三亚市','五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市'],
38     "广西壮族自治区":['南宁市','桂林市']
39     },
40 "西南地区":{
41     "重庆市":['渝中区', '大渡口区', '江北区', '沙坪坝区', '九龙坡区', '南岸区', '北碚区', '万盛区', '双桥区', '渝北区'],
42     "四川省":['成都市','自贡市'],
43     "贵州省":['贵阳市','遵义市'],
44     "云南省":['昆明市','保山市'],
45     "西藏自治区":['拉萨市','昌都地区']
46     },
47 "西北地区":{
48     "陕西省":['西安市','宝鸡市'],
49     "甘肃省":['兰州市','天水市'],
50     "青海省":['西宁市','玉树州'],
51     "宁夏回族自治区":['银川市','石嘴山市'],
52     "新疆维吾尔族自治区":['乌鲁木齐市','克拉玛依市']
53     },
54 "特别行政区":{
55     "香港特别行政区":['中西区', '东区', '九龙城区', '观塘区', '南区', '深水埗区', '黄大仙区', '湾仔区', '油尖旺区', '离岛区', '葵青区', '北区', '西贡区', '沙田区', '屯门区', '大埔区', '荃湾区', '元朗区'],
56     "澳门特别行政区":[],
57     "台湾省":['台北市', '高雄市', '基隆市', '台中市', '台南市', '新竹市', '嘉义市']
58     }
59 }


citylist.py

checkinput.py

 

python 窗口 多菜单 python 多级菜单_ci_02

1 #!/usr/local/env python3
  2 '''
  3 Author:@swht
  6 '''
  7 import welcome,citylist
  8 import sys,time
  9 
 10 #一级菜单输入字段判断
 11 def CheckInputOne(Choose):
 12     if Choose == '':
 13         print("指令不能为空,请输入正确指令!")
 14     else:
 15         if Choose.isdigit():
 16             Choose = int(Choose)
 17             if Choose >= 11 and Choose <= 19:
 18                 InputIfOne(Choose)
 19             else:
 20                 print("你输入的指令已超出范围,请按照系统指令进行输入!")
 21         else:
 22             print("请输入正确的指令,指令为整数型数字!")
 23 
 24 def InputIfOne(Choose):
 25     if Choose == 11:
 26         ShowInfo("华北地区")
 27     if Choose == 12:
 28         ShowInfo("东北地区")
 29     if Choose == 13:
 30         ShowInfo("华东地区")
 31     if Choose == 14:
 32         ShowInfo("华中地区")
 33     if Choose == 15:
 34         ShowInfo("华南地区")
 35     if Choose == 16:
 36         ShowInfo("华南地区")
 37     if Choose == 17:
 38         ShowInfo("西北地区")
 39     if Choose == 18:
 40         ShowInfo("特别行政区")
 41     if Choose == 19:
 42         print("欢迎下次再来中国!")
 43         time.sleep(1)
 44         sys.exit(0)
 45 
 46 #二级、三级菜单输入字段判断
 47 def ChooseInputTwo(Choose):
 48     if Choose == '':
 49         print("指令不能为空,请输入正确指令!")
 50     else:
 51         if Choose.isdigit():
 52             return True
 53         elif Choose == 'back' or Choose == 'Back' or Choose == 'BACK':
 54             return False
 55         else:
 56             # print("你输入的指令已超出范围,请按照系统指令进行输入!")
 57             pass
 58 #二级、三级菜单显示
 59 def ShowInfo(Area):
 60     #显示省份
 61     for i in range(0,3): #允许用户最大错误次数3次
 62         print('''
 63             ===================================================
 64                                 欢迎来到%s!
 65             ==================================================='''% Area)
 66         # citylist.CityList[Area].keys() 获取地区里面的省份键值
 67         Count = 0
 68         for index,key in enumerate(citylist.CityList[Area].keys()): #python3中citylist.CityList[Area].keys()输出的是dict_keys对象
 69             Count += 1
 70             print("\t\t\t序号:%s\t省份:%s" % (index,key))
 71         Choose1 = input("\t\t请选择相应序号进入相应省份!返回上级菜单[Back]:").strip()
 72         ChooseInputTwo(Choose1)
 73         if ChooseInputTwo(Choose1) == True:
 74             Choose1 = int(Choose1)
 75             if Choose1 >= 0 and Choose1 < Count:
 76                 #python3中将dict_keys转换成列表再做索引
 77                 #python2中dict.keys()的输出对象就是一个列表,可以直接进行索引操作
 78                 #KeyOne = citylist.CityList[Area].keys()[Choose1]
 79                 KeyOne = list(citylist.CityList[Area].keys())[Choose1] #获取省份keys
 80                 #显示城市
 81                 for i in range(0,3): #允许用户最大错误次数3次
 82                     Count = 0
 83                     print('''
 84             ===================================================
 85                             欢迎来到%s!
 86             ===================================================''' % KeyOne)
 87                     for index,key in enumerate(citylist.CityList[Area][KeyOne]):
 88                         Count += 1
 89                         print("\t\t\t序号:%s\t城市地区:%s" % (index,key))
 90                     Choose2 = input("\t\t请选择相应序号进入相应城市地区!返回上级菜单[Back]:").strip()
 91                     ChooseInputTwo(Choose2)
 92                     if ChooseInputTwo(Choose2) == True:
 93                         Choose2 = int(Choose2)
 94                         if Choose1 >= 0 and Choose2 < Count:
 95                             KeyTwo = citylist.CityList[Area][KeyOne][Choose2] #获取地区名称
 96                             print("\t\t哈哈,到头了!\t\t%s" % KeyTwo)
 97                             print("\t\t穿越到上一级菜单喽......")
 98                             time.sleep(1)
 99                             break
100                         else:
101                             print("你输入的指令不在范围内!")
102                             time.sleep(1)
103                             continue
104                     elif ChooseInputTwo(Choose2) == False:
105                         print("\t\t系统将返回上一级菜单!")
106                         time.sleep(1)
107                         break #跳出当前一级循环
108                     else:
109                         print("你是输入有误,请重新输入!")
110                         time.sleep(1)
111                         continue
112                 print("你的输入次数已达三次,系统返回上一级菜单!")
113             else:
114                 print("你输入的指令不在范围内!")
115                 time.sleep(1)
116                 continue #跳出当前循环
117         elif ChooseInputTwo(Choose1) == False:
118             welcome.WelcomeInfo() #首页
119         else:
120             print("你的输入有误,请重新输入!")
121     print("你的输入次数已达三次,系统将返回首页!")
122     welcome.WelcomeInfo()


checkinput.py

github更新地址:

  https://github.com/swht/projects/tree/master/day01/work-2