如何在不清除背景的情况下弹出ncurses小部件?
作者:互联网
ncurses通常会清除背景并显示小部件/窗口.
我想让ncurses像当前会话的助手一样工作,并且它会在当前ssh会话上方弹出窗口
外观将类似于CMD.exe实现(参见图片)
解决方法:
简短的答案:您不能这样做.
长:curses应用程序是全屏程序,可以清除屏幕,以便他们知道屏幕上的内容(因此curses库可以优化其输出:使用最少的工作量).
您可以编写一个使用其自身规则的低级应用程序,例如,使用terminfo / termcap接口.即使您将其与ncurses库链接,也不会使它成为curses应用程序,而是terminfo(首选)或termcap(长期淘汰)应用程序.请参阅ncurses常见问题解答Types of library users.
要为所示示例创建一个terminfo应用程序,您的应用程序将(顺便说一句,可能还有其他事情要做):
>使用setupterm
初始化终端(实际上是应用程序与终端数据库的连接).
>如果终端支持,请保存原始光标位置
>清除屏幕的其余部分
>绘制对话框
>运行对话框
>使用保存的光标位置,将光标返回到原始位置
>清除屏幕的其余部分.
根据终端的功能,可能需要不同的方案(终端功能的不同组合)来清除屏幕,绘制对话框等.
在绘制对话框时,您将无法使用任何高级curses调用. python文档并未真正概述低级调用.要看到这一点,请阅读ncurses documentation.
有些人可能会建议替代方案(我不会),但是由于终端功能的原因,它们具有相同的局限性.
标签:ncurses,python,c-4,perl 来源: https://codeday.me/bug/20191027/1943768.html