2012-02-28 3 views
15

Python(PyCharm 2.0)を使用して実行する簡単なcursesスクリプトを取得しようとしています。Setuptermがcursesを使用してPythonプログラムで端末を見つけることができませんでした

これは私のスクリプトです:

import curses 
stdscr = curses.initscr() 
curses.noecho() 
curses.cbreak() 
stdscr.keypad(1) 
while 1: 
    c = stdscr.getch() 
    if c == ord('p'): print("I pressed p") 
    elif c == ord('q'): break 

curses.nocbreak(); stdscr.keypad(0); curses.echo() 
curses.endwin() 

私は私のIDE(PyCharm 2)からこれを実行すると、私は次のエラーを取得する:

 

_curses.error: setupterm: could not find terminal 
Process finished with exit code 1 
 

私はbashのからスクリプトを実行した場合、それは単純になりますwhileループではpまたはqを押すことに反応しません。

ご協力いただければ幸いです。

答えて

1

私もcursesを使用することを学んでいるので、この例を検索するときにこの質問が見つかりました。私はそれについて詳しくは分かりません。私は、これはしかし作品を知っている:

import curses 
try: 
    stdscr = curses.initscr() 
    curses.noecho() 
    curses.cbreak() 
    stdscr.keypad(1) 
    while 1: 
     c = stdscr.getch() 
     if c == ord('p'): 
      stdscr.addstr("I pressed p") 
     elif c == ord('q'): break 
finally: 
    curses.nocbreak(); stdscr.keypad(0); curses.echo() 
    curses.endwin() 

私も試して追加:最後に:確か私はそれは、単純な何かがループ内でうまくいかない場合でも、元の外観だに端末を得ることを確認します。

テキストがウィンドウ内に表示されるようにするには、addstrを使用する必要があります。

20

あなたはこのように、的環境変数TERMTERMINFOを設定する必要があります。

export TERM=linux 
export TERMINFO=/etc/terminfo 

そして、あなたはデバイスがありません。このディレクトリ(/etc/terminfo)を持っている場合は、それを作る、とterminfoデータベースにコピーします。

+1

私のためのTERMINFOの設定は私の問題を解決しました。 – JohnMudd

0

私は同じ問題を抱えていた:あなたがデータベースをダウンロードすることができます "のlinux"、および "pcansi" 端末向け

Curses Programming with Python - Starting and ending a curses applicationを参照してください。

cursesアプリケーションの開始/終了プロセスを簡略化するcurses.wrapper()関数があります。

はここのPythonドキュメントからの例です:

 
from curses import wrapper 

def main(stdscr): 
    # Clear screen 
    stdscr.clear() 

    # This raises ZeroDivisionError when i == 10. 
    for i in range(0, 11): 
     v = i-10 
     stdscr.addstr(i, 0, '10 divided by {} is {}'.format(v, 10/v)) 

    stdscr.refresh() 
    stdscr.getkey() 

wrapper(main) 
1

ゴー(実行ボタンをPycharmする1次)/デバッグ構成を実行します。出力コンソールの端末をエミュレートする。その後、実行ボタンでプログラムを実行することができます。

関連する問題