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

使用python诅咒更改输入文本的颜色,python,text,terminal,ncurses,Python,Text,Terminal,Ncurses,我正在使用python的诅咒包装器库开发一个文本游戏。 我想由用户输入的文本是一个不同于游戏输出文本的颜色。我在为输出文本定义颜色对方面没有问题,但我不知道如何在用户主动键入时更改输入文本以显示不同的颜色 目前,我使用getstr()方法获取所有输入 python/curses可以这样做吗 谢谢, Ian当您可以在启用echo的情况下初始化Python curses包装时,如果您正在使用curses包装,如果最初关闭echo,例如 # Initialize curses std

我正在使用python的诅咒包装器库开发一个文本游戏。 我想由用户输入的文本是一个不同于游戏输出文本的颜色。我在为输出文本定义颜色对方面没有问题,但我不知道如何在用户主动键入时更改输入文本以显示不同的颜色

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

python/curses可以这样做吗

谢谢,
Ian

当您可以在启用
echo
的情况下初始化Python curses包装时,如果您正在使用curses包装,如果最初关闭echo,例如

    # 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()
如果诅咒没有回响,你的程序就必须进行一些回响。但是,由于您使用的是
getstr
,这意味着您已经打开了echo,因为
getstr
的(ncurses)手册页面显示

仅当当前启用“回显”时,才会回显输入的字符。在这种情况下,退格将作为删除前一个字符(通常是左运动)进行回显

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

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

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


ncurses手册页对此进行了解释。该函数在内部使用
waddch
(与
printw
addstr
)一样),但其手册页面并未提及这一点。

您只需使用
getch
获取输入,并按自己的意愿显示即可。它不像默认的
input
/
raw\u input
方法,它从
stdin
获取输入,并将其输出到
stdout