2016-05-23 3 views
0

В приведенном ниже коде есть главное меню и подменю. В первом меню появляется запрос на загрузку и выбор опции, которая будет загружать другую страницу с большим количеством опций. Я не могу понять, как добраться до другого раздела. Например, вызывается sub2.Добавление другого подменю в существующий код

Скажем, если выбран вариант 1, он предложит вам выбрать два варианта опций: 1_sub2_1 и option1_sub2_2.

Допустим, при выборе варианта 2 он запрашивает option2_sub2_1 option2_sub2_2

Я один набор параметров хранится как: menu_actions = { 'main_menu': main_menu, '1': один, «2 «: два, 'B': назад, 'Q': выход, }

можно иметь его установки так или иначе, как это: option1_sub2 = { '1': один, '2' : два, } и option2_sub2 = { '1': один, '2': два, }

Таким образом, можно повторно использовать одни и те же номера для различных элементов SUB2. Это возможно?

Это мой первый проект кода, и я не смог пройти мимо этой части. Любая помощь будет оценена по достоинству.

Код:

import sys, os 

# Main definition - constants 
menu_actions = {} 

# ======================= 
#  MENUS FUNCTIONS 
# ======================= 
# Main menu (display list on screen) 
def main_menu(): 
    os.system('clear') 

    print "1. Option" 
    print "2. Option" 

    choice = raw_input(" >> ") 
    exec_menu(choice) 
    return 
# Choose a menu 
def exec_menu(choice): 
os.system('clear') 
ch = choice.lower() 
if ch == '': 
    menu_actions['main_menu']() 
else: 
    try: 
     menu_actions[ch]() 
    except KeyError: 
     print "Invalid selection, please try again.\n" 
     menu_actions['main_menu']() 
return 
# ======================= 
#  SUB MENUS 
# ======================= 
# Back to main menu 
def back(): 
menu_actions['main_menu']() 
# Exit program 
def exit(): 
    sys.exit() 
# Option1 
def one(): 
    print "Option 1" 
    print (30 * '-') 
    print "Sub Option 1" 
    print "Sub Option 2" 
    print "[B]ack" 
    print "[Q]uit" 
    choice = raw_input(" >> ") 
    exec_menu(choice) 
    return 
# FTP 
def two(): 
    print (30 * '-') 
    print "Sub Option 1" 
    print "Sub Option 2" 
    print "[B]ack" 
    print "[Q]uit" 
    choice = raw_input(" >> ") 
    exec_menu(choice) 
    return 
# ======================= 
# MENUS DEFINITIONS 
# ======================= 
# Menu definition 
menu_actions = { 
    'main_menu': main_menu, 
    '1': one, 
    '2': two, 
    'b': back, 
    'q': exit, 
} 
# ======================= 
#  MAIN PROGRAM 
# ======================= 
# Main Program 
if __name__ == "__main__": 
     # Launch main menu 
    main_menu() 

ответ

0

начала абстрагируя его

первым создать метод, который будет постоянно незамедлительным для ввода до тех пор, данный результат ввода не будет достигнуто

def input_option(prompt,options): 
    while True: 
      result = raw_input(prompt) 
      if result in option: return result 
      print "Invalid Option Selected %r"%result 

протестировать эту функцию с такими вещами, как print input_option("Enter 1 or 2 or Three",["1","2","Three"])

Теперь абстрактный из функции для отображения меню и получить вход в меню

def select_menu(options): 
    print "Select From the choices Below:" 
    options = [] 
    for option_text,input_value in options: 
      print option_text 
      options.append(input_value) 

    return input_option(">>>",options) 

вы можете проверить это, как

options = [("1> option 1","1"),("2> option 2","2")] 
print select_menu(options) 
options2 = [("[B]ack","B"),("[Q]uit","Q")] 
print select_menu(options2) 

то все, что вам нужно сделать, это связать его вместе отображения действий на входы

menu_otions = [("Show Menu [1]","1"),("Show Menu [2]","2"),("[Q]uit","Q")] 
menu_actions = {"1":show_menu1,"2":show_menu2,"Q":sys.exit 
Смежные вопросы