如何在ncurses屏幕中移动字符串?

时间:2014-02-04 07:54:22

标签: python ncurses

例如,我在第一行有一个字符串“Hello world”。 如何将其移至第二行?

ps:我知道我可以使用这样的代码:

import curses

stdscr = initscr()
stdscr.adstr(x,y,"Hello World")
y += 1
stdscr.erase()
stdscr.adstr(x,y,"Hello World")
stdscr.getch()

但是我在这个“Hello World”下面有很多上下文,我想找到一种只移动或删除“Hello World”的方法。我该怎么办?

2 个答案:

答案 0 :(得分:1)

如果文本只占用一行,您可以使用clrtoeol函数从光标开始擦除整行:

curses.setsyx(y, 0)   # beginning of the correct line
# stdscr.move(y, 0)   # alternative
stdscr.clrtoeol()    # clears the current line

或者,您可以使用hline函数插入整行空格:

stdscr.hline(y, 0, ord(' '), 80)   # where 80 is the width of the screen

答案 1 :(得分:0)

使用curses.panel.Panel.move

import curses
import curses.panel

x = 3
y = 3
stdscr = curses.initscr()


w = curses.newwin(1, 20, y, x)
p = curses.panel.new_panel(w)
w.addstr(0, 0, "Hello World")
w.getch()

p.move(y+1, x)
curses.panel.update_panels()
curses.doupdate()
w.getch()

curses.endwin()

BTW,addstr的参数为y, x, str,而不是x, y, str

请参阅Demo