2017-03-02 7 views
1

Pythonでcursesライブラリに問題があります。次のコードを考えてみましょう:cursesラッパーを呼び出した後にPythonの印刷が乱れる

def main(stdscr): 

    print('Hello World!!') 
    create_screen() 
    curses.endwin() 

if __name__ == "__main__": 
    curses.wrapper(main) 

問題は、「印刷」機能により印刷されたすべてのテキストがさえて画面を開始「create_screen()」関数を呼び出す前にめちゃくちゃされている「(curses.initscr)」を

+1

次に、何かを印刷しないでください...理由のためにcursesを使用しています。 –

+0

正確に何を達成したいですか?なぜ 'curses'を' print'への "普通"の呼び出しに使用できないのですか? –

+0

@AnttiHaapalaメインプログラム画面をcurses、バナー、ユーザー入力などで呼び出す前に、いくつかのものを印刷する必要があります。 – Lonesome

答えて

1

プログラムの前後に通常printinputを使用できます。cursesを使用してください。また、すべてのコードをmainに入れる必要はなく、main関数をcursesに渡す必要はありません。 mainは他のどのような機能でもあります。この単純な例をチェックアウト:

import curses, time 

def incurses(stdscr): 
    stdscr.addstr(0, 0, "Exiting in ") 
    stdscr.addstr(2, 0, "Hello World from Curses!") 
    for i in range(5, -1, -1): 
     stdscr.addstr(0, 11, str(i)) 
     stdscr.refresh() 
     time.sleep(1) 
    curses.endwin() 

def main(): 
    print('Hello World!!') 
    choice = input("Start Curses Program? ") 
    if choice == "yes": 
     curses.wrapper(incurses) 
    print("After curses") 

if __name__ == "__main__": 
    main() 

このプリントをし、ユーザーの入力を要求し、その後、「通常」の印刷モードに戻り、呪いの画面を示しています。

+0

ありがとう、思考以上の問題である@tobias_k :) – Lonesome

+0

'curses.wrapper'は' curses.endwin() 'は不要です。自動的に行います。 https://docs.python.org/3/howto/curses.html#starting-and-ending-a-curses-application – Dineshs91

関連する問題