0
私は大規模なコード実行を簡略化するためにインタラクティブなテキストメニューを実装しようとしていますが、完全に機能するように構造化する方法がわかりません。今私は、メインメニュー、2つのサブメニュー、および終了機能を持っています。私は特定のコードを実行するためにサブメニューが必要ですが(私は後で結びます)、オプション1と2がいつでも私の2つのサブメニューに行く方法で書いています。私のメニューで。これをコード化する最良の方法は何ですか?最初のオプションとして1を選択した場合、#1または#2のスポットに対して他のオプションを満たしていますか?私は明らかに1と2の定数値を取り除く必要がありますが、私はそれが必要な方法で動作するようにする方法がわかりません。Pythonのインタラクティブメニュー
import time, sys, os
# Main definition - constants
menu_actions = {}
##Menu Functions
def main_menu():
os.system('cls')
print ""
print 30 * "-", "MENU", 30 * "-"
print "1. Batch Deployment"
print "2. Single Deployment"
print "3. List Tickets"
print "0. Exit/Quit"
print 66 * "-"
print ""
choice = raw_input(" Make a selection from the menu >> ")
exec_menu(choice)
def batch_menu():
os.system('cls')
print "Batch Deployment\n"
print "1. Run All In Progress Sonic Deployments"
print "9. Back"
print "0. Quit"
print ""
choice = raw_input(" >> ")
exec_menu(choice)
return
def ticket_menu():
os.system('cls')
print "Choose Task to Deploy...\n"
print "9. Back"
print "0. Quit"
print ""
choice = raw_input(" >> ")
exec_menu(choice)
return
def exec_menu(choice):
os.system('cls')
ch = choice.lower()
if ch == '':
menu_actions['main_menu']()
else:
try:
menu_actions[ch]()
except KeyError:
print "Invalid selection, please try again.\n"
time.sleep(3)
menu_actions['main_menu']()
return
def back():
menu_actions['main_menu']()
# Menu definition
menu_actions = {
'main_menu': main_menu,
'1': batch_menu,
'2': ticket_menu,
'9': back,
'0': exit, }
# Menu Logic
if __name__ == "__main__":
# Launch main menu
main_menu()