2017-01-09 19 views
0

私はかなり呪いに新しいので、noobの質問には申し訳ありません:)私はwhile True:ループを実行してAPIからデータを取り出し、関数show_header_and_footer()を使って提示します。次に、一定のリフレッシュを避け、APIプロバイダの制限を超えるために3秒間スリープします。Python curses:APIとgetch()から同時にデータを取得する

if __name__ == "__main__": 

    setup_curses() 

    while True: 
     catch_input() 
     show_header_and_footer() 
     stdscr.refresh() 
     header.refresh() 
     footer.refresh() 
     time.sleep(3) 

あなたはおそらく気づいているように、そのように見えるcatch_input()関数の呼び出しもあります:

def catch_input(): 
    c = stdscr.getch() 
    if c in (ord('q'), ord('Q')): 
     curses.raw() 
     curses.endwin() 

すべてが動作しますが、「Q」をクリックした後、私はtime.sleep(3)の終わりまで待たなければならないが、 。それをどうすれば改善できますか?

答えて

1

注:「q」または「Q」を押すと、アプリケーションを終了します。

これが当てはまる場合は、catch_input()メソッドからステータスをメインに戻してください。この状態を使用して、while(真)ループから戻る/中断します。この方法では、3秒タイマーに遭遇することはありません。

catch_Input()メソッド:

def catch_input(): 
    c = stdscr.getch() 
    if c in (ord('q'), ord('Q')): 
     curses.raw() 
     curses.endwin() 
     return False 
    return True 

主な方法は、():それは動作しません

if __name__ == "__main__": 

setup_curses() 

while True: 
    if not catch_input(): 
     break 
    show_header_and_footer() 
    stdscr.refresh() 
    header.refresh() 
    footer.refresh() 
    time.sleep(3) 
+0

、何も変わっていません – mrpapa

関連する問題