0

我正在编写一个程序curses,有时会发生这样的情况,如果我让程序保持打开状态并使用其他终端选项卡一段时间,当我再次使用该程序时,它似乎已经刷新了某些东西并且某些东西消失了......我不能显示图片或屏幕截图,因为我还不太了解它何时以及如何发生......有没有办法防止或解决这个问题?

4

1 回答 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 回答