如何在控制台应用程序中生成彩色GUI?

2024-09-27 01:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

对于下列问题,答案可以是C/C++、C语言或Python。如果可能的话,我希望答案是跨平台的,但我意识到我可能需要conio或{}

  1. 如何输出彩色文本?在
  2. 我该如何做一个图形用户界面,比如top或{},其中某些东西被“绘制”到终端中的特定空间?在

如果可能的话,一个小的oneliner代码示例将是很好的。在


Tags: 答案代码文本终端示例top跨平台绘制
3条回答

从这个角度来看,控制台在很多方面只是一个经典终端设备的仿真。创建Curses最初是为了支持在不同终端类型上执行常见操作的一种方式,用户可以在登录序列中选择实际使用的终端。这一传统在今天的恩库斯仍然存在。在

ncurses库提供了调用函数来直接定位光标并发出文本,众所周知它适用于Windows控制台(其中命令行.EXE运行),以及各种*nix平台等价物,如XTerms等。如果你有这样的东西的话,它甚至可以通过串行线路与真正的Dec VT100一起工作。。。在

VT100及更高型号所理解的转义序列成为ANSI标准终端的基础。但你真的不想知道。使用ncurses,你就不必了。在

依赖于conio不会让您跨平台,因为这是一个DOS/Windows特有的API。在

编辑:显然,ncurses库本身并不容易建立在mingw上,至少从快速搜索到它的过程中可以看出。但是,并不是所有的都丢失了,因为ncurses只是原始curses库的后代之一。在

另一个是PDCurses已知的编译和运行Windows控制台,以及X11和各种*nix平台。在

(我在维基百科上追查参考资料时才想起,诅咒源于编写游戏《流氓》,这是nethack的鼻祖。它的一些代码也是从vi编辑器的光标管理模块“借用”来的。所以在nethack source kit里寻找灵感可能根本不是一个疯狂的想法……)

大多数终端窗口理解ANSI转义序列,允许着色、光标移动等。您可以找到它们的列表here。在

使用这些序列看起来有点“老派”,但你可以在诅咒不适用的情况下使用它们。例如,我在bash脚本中使用following函数以红色显示错误消息:

color_red()
{
    echo -e "\033[01;31m$1\033[00m"
}

你可以这样说:

^{pr2}$

是的,这是VT100转义码。最简单的事情就是用一些诅咒的味道。一旦,你选择了一个诅咒的味道,这是相当简单的两个做1和2。在

以下是ncurses的操作指南。在

http://web.cs.mun.ca/~rod/ncurses/ncurses.html

相关问题 更多 >

    热门问题