使用ncurses实现固定的页眉和页脚?

4 投票
2 回答
1307 浏览
提问于 2025-04-16 17:13

我第一次尝试使用ncurses(通过UniCurses在Python中)。我想设计一个控制台应用程序,里面有固定的头部和底部,但文档上对我该怎么做并没有说明。我应该使用窗口吗?还是面板?或者其他什么?我已经弄明白了怎么给一段文字设置前景色和背景色,但不知道怎么把这个效果扩展到整个控制台窗口的长度。为了让你们更清楚我想做的事情,可以看看这些cmus的截图:

http://cmus.sourceforge.net/#home

我想要的效果就是顶部的蓝色头部和底部的蓝白色底部。谢谢!

2 个回答

1

使用Python的Curses模块

初始化curses并设置一个颜色供使用

from curses import *
stdscr = initscr()
start_color()
init_pair(1,COLOR_RED,COLOR_WHITE)

获取屏幕的宽度和高度

max_y, max_x = stdscr.getmaxyx()

创建一个子窗口的标题,宽度要和终端的最大宽度一致

header = stdscr.subwin(1, max_x, 0, 0)

给标题的背景和里面的文字上色

header.bkgd(color_pair(1))

你想让它显示什么内容

header.addstr('Header Text')

展示所有内容

header.refresh()
2

好的,我搞定了。子窗口来帮忙了:

init_pair(1, COLOR_BLACK, COLOR_WHITE)
header = subwin(stdscr, 1, 80, 0, 0)

wattron(header, COLOR_PAIR(1))
waddstr(header, "Title")
wbkgd(header, COLOR_PAIR(1))
wattroff(header, COLOR_PAIR(1))

可能还有更好的办法,但这也是一个解决方案。

撰写回答