使用n / curses打印到终端窗口右侧和/或底侧的标准方法是什么?
这是一个小草图:
Terminal window:
================================================================================
[ MSG ]
message number 2 here is more
================================================================================
C或Python中的解决方案都很好。
谢谢!
答案 0 :(得分:2)
我会选择:
mvprintw(COLS-length("msg"),1,"msg");
mvprintw(0,LINES-1,"message number 2");
mvprintw(COLS-length("here is more"),LINES-1,"here is more");
这有点像袖口,这就是我做大部分curses编程的方式。
答案 1 :(得分:1)
我知道有两种方法,但只有一种我敢肯定:
ONE:
来自ncurses库的move(int row, int col)
。但是,如果您要在此语句之后执行一些I / O,则可以使用相应的“mv”函数来完成。例如,
move(y, x);
addch(ch);
可以替换为
mvaddch(y, x, ch);
注意:我只是对此负责,但我自己没有测试过。
二:
printf("\033[%d;%df", y, x);
fflush(stdout);
printf("Hello, I will be placed at (x,y)\n");
我确信这个有效。
祝你好运!
答案 2 :(得分:0)
我编写了这段代码来自动解决问题。调用它而不是scr.addstr(),它将负责执行正确的addstr / insstr命令以使其工作。
def cwrite(scr, row, col, str, attr=0):
max = scr.getmaxyx()
if row < max[0] - 1:
scr.addstr(row, col, str, attr)
elif row == max[0] - 1:
if len(str) + col >= max[1]:
offset = max[1] - col - 2
scr.addstr(row, col, str[:offset])
scr.addstr(row, max[1] - 2, str[offset + 1], attr)
scr.insstr(row, max[1] - 1, str[offset], attr)
else:
scr.addstr(row, col, str, attr)