在python curses中刷新的bug

时间:2015-06-16 23:22:36

标签: python terminal ncurses curses python-curses

我正在curses编写一个程序,有时会发生这样的情况:如果我打开程序并使用其他终端标签一段时间,当我再次使用该程序时,它似乎已刷新东西和东西已经消失了...我无法显示图片或截图,因为我还没有及时了解它是什么时候以及它是如何发生的......有没有办法预防或解决这个问题?

1 个答案:

答案 0 :(得分:0)

screen.getchstdscr读取,如果刷新(由于屏幕上的任何更改),将覆盖boxes。您可以将其更改为box.getch,就像我在scroll page by page or line by line using python curses

中所做的那样

getch的手册页

  

如果窗口不是打击垫,并且自上次调用 wrefresh 后移动或修改了该窗口,则在读取另一个字符之前将调用 wrefresh 。 / p>

在您使用的示例程序中

screen.keypad( 1 )

仅适用于从标准屏幕读取。如果您从box窗口中读取,则应在其上设置小键盘标志:

box.keypad( 1 )

keypad的手册页

  

键盘的默认值为FALSE

也就是说,它是每个窗口的默认设置。

具有多个窗口的curses程序可以选择在不同时间从不同窗口读取。每个屏幕只有一个输入缓冲区,但刷新当前窗口的副作用使管理窗口更新变得更加简单。 (对于复杂的窗口堆叠顺序,您将使用panel库而不是依赖于此副作用。)