有没有办法在同一终端上使用curse创建单独的显示和输入?

8 投票
3 回答
4225 浏览
提问于 2025-04-16 16:05

我想写一个命令行程序,界面看起来像这样:

------------
|          |
|     A    |
|__________|
|_____B____|

A 是一个独立的进程,它会循环运行并显示实时事件的列表。它会自动刷新。

B 是一个命令提示符,固定在底部,并且有命令历史记录。

我知道一些命令行的IRC程序可以做到这一点,所以这应该是可行的。

如果你能给我一个使用Python绑定的代码片段,那就更好了。

我知道有个帖子提到过这个,但我对文档有点迷茫。

3 个回答

0

为了后代参考,这里有一个很棒的架构实现,使用了urwid(一个ncurses的封装库)来编写:http://zderadicka.eu/terminal-interfaces-in-python/#comment-123799

把它改造成一个聊天客户端需要做一些调整,但用管道来实现其实很简单。作者的代码可以在github上找到:https://github.com/izderadicka/xmpp-tester/blob/master/commander.py

0

你可以看看/Demo/curses/这个目录,它是Python源代码的一部分。里面有几个很有意思的例子,都是用curses模块写的,你可以从中学到很多东西,甚至更多。

2

最后我尝试用urwid来实现这个功能,urwid的层次比ncurse高得多。

我在StackOverflow上问了这个问题,但没有得到更多的结果。

不过,最后我找到了一些开源软件,它们正好实现了我想要的功能。我使用了它的源代码,做出了一个可以用的东西。你可以在相关问题中找到答案。

撰写回答