如何在不清除背景的情况下弹出ncurses小部件?

ncurses通常会清除背景并显示小部件/窗口.

我想让ncurses像当前会话的助手一样工作,并且它会在当前ssh会话上方弹出窗口

外观将类似于CMD.exe实现(参见图片)

如何在不清除背景的情况下弹出ncurses小部件?

解决方法:

简短的答案:您不能这样做.

长:curses应用程序是全屏程序,可以清除屏幕,以便他们知道屏幕上的内容(因此curses库可以优化其输出:使用最少的工作量).

您可以编写一个使用其自身规则的低级应用程序,例如,使用terminfo / termcap接口.即使您将其与ncurses库链接,也不会使它成为curses应用程序,而是terminfo(首选)或termcap(长期淘汰)应用程序.请参阅ncurses常见问题解答Types of library users.

要为所示示例创建一个terminfo应用程序,您的应用程序将(顺便说一句,可能还有其他事情要做):

>使用setupterm初始化终端(实际上是应用程序与终端数据库的连接).
>如果终端支持,请保存原始光标位置
>清除屏幕的其余部分
>绘制对话框
>运行对话框
>使用保存的光标位置,将光标返回到原始位置
>清除屏幕的其余部分.

根据终端的功能,可能需要不同的方案(终端功能的不同组合)来清除屏幕,绘制对话框等.

在绘制对话框时,您将无法使用任何高级curses调用. python文档并未真正概述低级调用.要看到这一点,请阅读ncurses documentation.

有些人可能会建议替代方案(我不会),但是由于终端功能的原因,它们具有相同的局限性.

上一篇:c-使用gcc -incurses标志编译ncurses代码似乎不起作用


下一篇:C-使用ncurses获得中性背景