2011-07-09 16 views
2

私はncursesにメニューシステムを持っています。 オプションのいずれかを選択すると、別のメニューに移動します。しかし、私はどのように戻ってくるのですか?Python Curses:前のメニューに戻る

import curses 

def Main(): 
    x = 0 
    while x!= ord('2'): 
     x = screen.getch() 
     screen.clear();screen.border(); 
     screen.addstr(1,1, "Please choose:") 
     screen.addstr(3,1, "1 - Another Menu") 
     screen.addstr(4,1, "2 - Exit") 

     if x==ord('1'): 
      y = 0 
      while y!= ord('2'): 
       y = screen.getch() 
       screen.clear();screen.border(); 
       screen.addstr(1,1, "Please choose from new menu:") 
       screen.addstr(3,1, "1 - Do Something new") 
       screen.addstr(4,1, "2 - Previous Menu") 
       if y == ord('1'): doSomething() 

      #Here I exit the internal loop. I need to go back to the previous menu, but I don't know how. 
      ## 
    ##exit outside loop and close program 
    ## 
    curses.endwin(); exit(); 

screen = curses.initscr() 
Main() 

理想的には私はコードの行の間でジャンプするGOTOモジュールを使用する必要があると思いますが、私が使用しているデバイスが内蔵され、そのモジュールが付属していません。

他の方法は知っていますか?本当に助けていただければ幸いです。

============更新:==================

さて、私はまた、あなたが両方を再生することができることに気づきました簡単にメニューの:ループが終了している間

import curses 

def Main(): 
    x = 0 
    while x!= ord('2'):   #draws 1st menu 
     screen.clear();screen.border(); 
     screen.addstr(1,1, "Please choose:") 
     screen.addstr(3,1, "1 - Another Menu") 
     screen.addstr(4,1, "2 - Exit") 
     x = screen.getch()   #grab input AFTER first giving options :) 
     if x==ord('1'):    
      y = 0 
      z = 0 
      while y!= ord('2'): #draws 2nd menu 
       screen.clear();screen.border(); 
       screen.addstr(1,1, "Please choose from new menu:") 
       screen.addstr(3,1, "1 - Do Something new") 
       screen.addstr(4,1, "2 - Previous Menu") 
       screen.addstr(6,1, "current loop : "+str(z)) 
       y = screen.getch();  #grabs new input 
       while z!= -1:   #never breaks from loop unless 'break' is called 
        if y == ord('1'): 
         z += 1   
         break #regenerates 2nd menu 
        break #regenerates 1st menu 

      #Here we exit the internal loop. 
      ## 
##exit outside loop and close program 
curses.endwin(); exit(); 

screen = curses.initscr() 
Main() 

答えて

1

が第二の後x = 0を追加します。

は(あなたがそうしないだろうxセット「出口」への最初のメニューから出てくる。だけではなく、最初のループの周りxごと時間をリセットする必要があり、これも2番目のメニューを終了します。)

+0

が、私は誰かが "2-Previous Menu"を選択したとき(内部!= ord( '2')のために)内部ループから壊れてしまうので、ここでは本当に 'ブレーク'を使う必要はありません。私はちょうど最初のメニューを再生成する必要があります。 – tetris11

+0

@テトリス:おっと、申し訳ありません、あなたは正しいです。新しい答えを見てください。 – katrielalex

+0

あああ!ありがとう! – tetris11

関連する問題