2012-01-08 9 views
1

cursesプログラムで「i」を押すと、IPythonシェルにドロップしようとしています。ここまで、私はcursesウィンドウといくつかの他のウィンドウを設定しました。 whileループを使用してプログラムとやりとりし、キーストロークを操作することができます。cursesモジュールを使用するPythonプログラムにIPythonシェルを埋め込むにはどうしたらいいですか?

投稿者Embedding IPythonブロックの最初と最後に表示されるコードを借りました。

... 

from IPython.Shell import IPShellEmbed 
ipshell = IPShellEmbed() 

... 

def main(): 

stdscr = curses.initscr() 

(win_maxy, win_maxx) = stdscr.getmaxyx() 

onethirds_win_width = int(math.floor(win_maxx/3)) 
half_win_heigth = int(math.floor(win_maxy/2)) 

begin_x = 0; begin_y = 0 
height = half_win_heigth ; width = onethirds_win_width 
download_win = curses.newwin(height, width, begin_y, begin_x) 
download_win.border() 
download_win.refresh() 
download_list_win = download_win.subwin(height-2, width-2, begin_y+1, begin_x+1) 

begin_x = (half_win_heigth-1)+2 ; begin_y = 0 
height = half_win_heigth ; width = onethirds_win_width 
configs_win = curses.newwin(height, width, begin_y, begin_x) 
configs_win.border() 
configs_win.refresh() 
configs_list_win = configs_win.subwin(height-2, width-2, begin_y+1, begin_x+1) 

begin_x = 0 ; begin_y = win_maxy-1 
height = 1 ; width = win_maxx 
status_win = curses.newwin(height, width, begin_y, begin_x) 

begin_x = 0 ; begin_y = half_win_heigth+2 
height = 1 ; width = win_maxx 
input_win = curses.newwin(height, width, begin_y, begin_x) 
input_win_textbox = curses.textpad.Textbox(input_win) 
#curses.textpad.rectangle(stdscr, begin_y, begin_x, begin_y+height+1, begin_x+width+1) 

curses.noecho() 
curses.cbreak() 
stdscr.keypad(1) 

stdscr.addstr(half_win_heigth+5, 5, "MCP Fetcher. Ready.") 
stdscr.refresh() 

while 1: 
    c = stdscr.getch() 
    download_win.border() 
    if c == ord('q'): break # Exit the while() 
    elif c == ord('c'): stdscr.clear() # Clear the screen 
    elif c == ord('i'): 
     curses.nocbreak(); stdscr.keypad(0); curses.echo() 
     ipshell() # Start the ipython shell 
     curses.noecho(); curses.cbreak(); stdscr.keypad(1) 

...

とコード続けます。

問題は、IPythonシェルにエコーやCbreakなどがないことです。これをどのように解決できますか?

おかげ

+2

おそらくこの質問には関係ありませんが、あなたがリンクしたドキュメントは2005年のものです。[現在の埋め込みドキュメント](http://ipython.org/ipython-doc/stable/interactive/reference.html#埋め込み-ipython)。 – minrk

+0

指摘していただきありがとうございます。しかし、私はIPython 0.10.2を使用していますが、[documentation](http://ipython.org/ipython-doc/rel-0.10.2/html/interactive/reference.html)は違いはありません。少なくとも埋め込みのセクション。 –

答えて

1

はここで助けるかもしれないトリックです:Working with curses in IPython. How can I improve this?

を...それはいくつかの問題を持っているが、基本的な機能があります。

+0

ありがとうございます。私は時間があるときにそれを試し、あなたの答えを受け入れたものとしてマークします。 –

関連する問題