gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:55:33 25 4
gpt4 key购买 nike

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

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

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

enter image description here

最佳答案

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

长:curses 应用程序是全屏程序,可以清除屏幕以便它们知道屏幕上有什么(因此 curses 库可以优化它的输出:使用最少的工作量)。

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

要为显示的示例制作一个 terminfo 应用程序,您的应用程序将(副手,可能还有其他事情要做):

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

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

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

有些人可能会提出替代方案(我不会),但由于终端功能,这些方案具有相同的局限性。

关于python - 如何在不清除背景的情况下弹出 ncurses 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com