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

时间:2016-02-15 03:08:25

标签: python c++ perl ncurses

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

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

外观看起来像CMD.exe实现(见图片)

enter image description here

2 个答案:

答案 0 :(得分:4)

简短回答:你不能这样做。

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

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

要为显示的示例创建一个terminfo应用程序,您的应用程序将(另外,可能还有其他事情要做):

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

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

在绘制对话框时,您将无法使用任何高级curses调用。 python文档并没有真正概述低级调用。要查看,请阅读ncurses documentation

有些人可能会建议替代方案(我不会),但是那些由于终端功能而具有相同的限制。

答案 1 :(得分:0)

Curses不是为此而设计的。您应该使用perl tk或类似的模块进行GUI。它相当容易使用,并且比你的目的更强大。