Python:使用像Vim一样的Curses恢复终端内容

时间:2015-02-19 20:47:56

标签: python windows-7 curses

现在,在我使用curses退出的Python程序之后,我留下了一个空白屏幕。我在运行程序之前所做的任何事情都不再可见。

我怎样才能这样做,以便在我的curses程序退出后,先前的内容可见,IE,lessmanvim在* nix上的方式。

额外细节:我使用Windows控制台,因此* nix终端命令无法正常工作。如果有人想知道我是如何设法让curses在Windows上工作的,请参阅my answer over here

我的问题与this one完全相同,除了我的特定于Python(不是C)和Windows(不是* nix)。

2 个答案:

答案 0 :(得分:1)

PDCurses尝试在启动时保存屏幕内容,并恢复它,您已设置PDC_RESTORE_SCREEN环境变量(当然,对于Windows)。

通过尝试,我的意思是这可能会失败。 Windows(使用[ReadConsoleOutput][1]函数)具有用于此目的的64KB缓冲区,并且大屏幕大小(特别是计算回滚)可能太大。如果它无法保存整个缓冲区,它会尝试仅保存/恢复您看到的部分(“窗口”)。当然,即便这样也可能太大了。

另一方面,在快速检查ncurses时,我没有看到这个问题(所以问题在于PDCurses)。

从更多阅读(例如,this question),我看到你可能正在使用UniCurses for Python,如果不是因为其作者选择在阻止它包含在任何python,ncurses(或PDCurses)版本中的方法。

答案 1 :(得分:0)

curses.endwin()应该可以解决问题。

这里是documentation explaining it.

此外,还有where I've personally used this function