使用python curses更改输入文本的颜色

时间:2017-03-05 22:08:49

标签: python text terminal ncurses

我正在使用python的curses包装库开发文本游戏。 我希望用户键入的文本与游戏输出的文本颜色不同。我没有为输出文本定义颜色对没有问题,但是我无法弄清楚如何在用户主动键入时更改输入文本以显示不同的颜色。

目前,我使用getstr()方法获取所有输入。

这可能与python / curses一起使用吗?

谢谢, 伊恩

1 个答案:

答案 0 :(得分:0)

虽然您可以在启用echo的情况下初始化Python curses包装器,但如果您使用curses 包装器,则最初会关闭回声,例如,

    # Initialize curses 
    stdscr = curses.initscr()

    # Turn off echoing of keys, and enter cbreak mode, 
    # where no buffering is performed on keyboard input 
    curses.noecho()
    curses.cbreak()

如果curses没有回应,你的程序就必须做一些回应。但是,由于您正在使用getstr,这意味着您已经启用了回音,因为getstr的(ncurses)手册页说明了

  

仅当 echo 当前打开时,才会回显字符输入。在这种情况下,退格会被回显为前一个字符的删除(通常是左运动)。

在这种情况下,您可以(取决于窗口的组织方式)使用wattrset

  

将“背景”属性集设置为attr。该集合最初为0(无属性)。

“背景”是指窗口属性,它与与添加到窗口的文本相关联的属性合并。由于getstr在其添加的文本中没有任何属性,因此设置窗口属性会“修复”您的问题。但请记住,在getstr完成后,您需要保存原始属性以恢复它们。

ncurses curs_attr手册页解释了这一点。 getstr函数在内部使用waddch(与printwaddstr一样),但其手册页未提及。