2012-01-18 12 views
4

私は看護師には新しく、OSX LionでいくつかのPythonコードを試してみることにしました。私は奇妙なバグを見つけ、私が間違っていることを知らない。私は広範囲にグーグルを行っており、Linuxでも同じような問題を見つけることはできません。私は選択的に行を削除して、そのうちの1つが問題であるかどうかを確認しました。以下のコードを実行すると、何も得られません。メニューがありません。私の端末が台無しになっています。もし私がenterを押すと、あなたは下の写真に何が入っているのか分かります。私はresetとタイプして、うまく動作させる必要があります。誰も私に提案を与えることができますか、またはどこに見える方向に私を指す?とても感謝しております。ありがとう。Ncurses、python、OSX Lion

スクリプト:

import curses 

screen = curses.initscr() # Init curses 
curses.noecho()    # Suppress key output to screen 
curses.curs_set(0)   # remove cursor from screen 
screen.keypad(1)   # set mode when capturing keypresses 

top_pos = 12 
left_pos = 12 
screen.addstr(top_pos, left_pos, "This is a String") 

結果:

screenshot

はところで、私はライオン、無MacPortsののデフォルトのPythonとLIBSを使用しています。可能であれば、ネイティブライブラリを使用したいと考えています

+0

「これは文字列です」を印刷した後に何も指示しなかったため、プログラムは終了しています。ここで何が起こると思いますか? – duskwuff

+0

スクリプトを終了する前に 'curses.endwin'を呼び出すことを覚えておく必要があります。これは端末設定を復元するためです。 –

答えて

5

あなたには2つの問題があります。

文字列をaddstrで画面に追加した後で、画面を更新するように指示することはありません。 addstrを呼び出した後にこれを追加:あなたは、端末をリセットするために、プログラムの最後に()endwinを呼び出す必要があり

screen.refresh() 

。あなたのプログラムの最後にこれを追加します。

curses.endwin() 

画面上に文字列を表示した後終了を呪いとする画面を返すので、あなたのプログラムを実行すると、これら2つの変更を加えた後、何もしないように見えるだろう、と述べたことあなたがプログラムを実行する前の状態。

は)(endwinを呼び出し前にこれを追加:あなたが終了する前にキーを押すため
screen.getch() 

はそれが待機します。

+0

これは完璧でした。ありがとうございました。私はリフレッシュして入力を待たなければならないことを知らなかったので、空白にならないようにしました。どうもありがとうございます。 – John

関連する問題