我正在编写一个程序curses
,有时会发生这样的情况,如果我让程序保持打开状态并使用其他终端选项卡一段时间,当我再次使用该程序时,它似乎已经刷新了某些东西并且某些东西消失了......我不能显示图片或屏幕截图,因为我还不太了解它何时以及如何发生......有没有办法防止或解决这个问题?
问问题
906 次
1 回答
0
screen.getch
从 读取stdscr
,如果刷新(由于屏幕上的任何更改),将覆盖boxes
. 您可以将其更改为box.getch
,就像我在使用 python curses 逐页或逐行滚动时所做的那样
手册页getch
说
如果窗口不是填充,并且自上次调用 wrefresh以来它已被移动或修改, 则wrefresh 将在读取另一个字符之前被调用。
在您使用的示例程序中
screen.keypad( 1 )
这仅适用于从标准屏幕读取。如果您从box
窗口读取,则应在其上设置键盘标志:
box.keypad( 1 )
手册页keypad
说
键盘的默认值为 FALSE
也就是说,它是每个窗口的默认值。
一个有多个窗口的 curses 程序可以选择在不同的时间从不同的窗口读取。每个屏幕只有一个输入缓冲区,但是刷新当前窗口的副作用使得管理对窗口的更新更加简单。(对于复杂的窗口堆叠顺序,您将使用该panel
库而不是依赖此副作用)。
于 2015-06-17T00:11:11.590 回答