如何将ipythonshell嵌入到使用curses模块的Python程序中?

如何将ipythonshell嵌入到使用curses模块的Python程序中?,python,terminal,ipython,ncurses,curses,Python,Terminal,Ipython,Ncurses,Curses,当我在我的诅咒程序中按下“I”时,我正试图进入IPython shell。到目前为止,我设置了一个诅咒窗口和其他几个窗口。我可以使用while循环与程序交互,并在击键时执行操作 我从中借用了一些代码,您可以在块的开头和结尾看到这些代码 ... from IPython.Shell import IPShellEmbed ipshell = IPShellEmbed() ... def main(): stdscr = curses.initscr() (win_maxy, win_ma

当我在我的诅咒程序中按下“I”时,我正试图进入IPython shell。到目前为止,我设置了一个诅咒窗口和其他几个窗口。我可以使用while循环与程序交互,并在击键时执行操作

我从中借用了一些代码,您可以在块的开头和结尾看到这些代码

...

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等。我如何解决这个问题


谢谢

这里有一个可能有用的技巧:


。。。它有一些问题,但基本功能仍然存在。

这里有一个技巧可能会有所帮助:


。。。它有一些问题,但基本功能仍然存在。

可能与这个问题无关,但您链接的文档是2005年的。这是。谢谢你指出。但是,我使用的是IPython 0.10.2,与之没有区别,至少是嵌入部分。可能与这个问题无关,但您链接的文档来自2005年。这是。谢谢你指出。但是,我使用的是IPython 0.10.2,并且没有什么不同,至少是用于嵌入的部分。