Python(PyCharm 2.0を使用)を使用して実行する簡単なcursesスクリプトを取得しようとしています。
これは私のスクリプトです:
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からスクリプトを実行すると、pやqを押しても反応しないwhileループに止まるだけです。
任意の助けいただければ幸いです。
次のように、環境変数TERM
およびTERMINFO
を設定する必要があります。
export TERM=linux
export TERMINFO=/etc/terminfo
また、デバイスにこのディレクトリがない場合(/etc/terminfo
)、それを作成し、terminfoデータベースをコピーします。
「linux」および「pcansi」端末の場合、データベースをダウンロードできます。
実行/デバッグ構成に移動します(Pycharm実行ボタンの横にあるもの)。出力コンソールで端末をエミュレートし続ける。次に、実行ボタンを使用してプログラムを実行できます。
私は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()
ループ内で単純な問題が発生した場合でも、ターミナルを元の外観に戻すために、try:finally:を追加しました。
Addstrを使用して、テキストがウィンドウ内に表示されることを確認する必要があります。
私も同じ問題を抱えていました。 Python-cursesアプリケーションの開始と終了)を使用したCuresプログラミング を参照してください。
Cursesアプリケーションの開始/終了プロセスを簡略化するcurses.wrapper()
関数があります。
Python docの例です:
from curses import wrapper def main(stdscr): #画面をクリア stdscr.clear() #これは、i == 10の場合にZeroDivisionErrorを発生させます。 for i in range(0、11): v = i-10 stdscr.addstr(i、0 、'10を{}で割ったものは{} 'です。format(v、10/v)) stdscr.refresh() stdscr.getkey() wrapper(main)
MacOSを使用してPyCharmを実行している場合は、実行スコープとしてIDE自体から環境変数を設定する必要があります。
構成の編集->環境変数
次に、以下の名前と値のペアを追加します
TERM Linux
TERMINFO/etc/zsh
上記は、コンソールから環境変数をエクスポートすることと同じです。
$ export TERM=linux
$ export TERMINFO=/bin/zsh
tERMのデフォルトはxtermです。他の値は[konsole、rxvt]です。たとえば、rxvtは、16色をサポートするように構築されることがよくあります。 TERMをrxvt-16colorに設定してみてください。
/ bin/zshは、Macで使用するターミナルアプリケーションのパスです。
これは、/ bin/zshにあるターミナルのようなlinux(TERM)にログインすることをプログラムに伝えるようなものです。 bashシェルを使用する場合は、/ bin/bashのようになります。
Idleを使用している場合は、このエラーが表示されます。これは、Idleのデフォルトの入出力リダイレクトによるものです。コマンドラインからプログラムを実行してみてください。 python3 <filename>.py