- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 python 的诅咒包装库开发一个文本游戏。我希望用户输入的文本与游戏输出的文本颜色不同。我在为输出文本定义颜色对时没有遇到任何问题,但我不知道如何更改输入文本以在用户主动键入时显示不同的颜色。
目前,我使用 getstr()
方法获取所有输入。
这可以用 python/curses 实现吗?
谢谢,伊恩
最佳答案
虽然您可以在打开 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()
如果curses没有回显,你的程序就必须做一些回显。但由于您使用的是 getstr
,这意味着您已打开 echo,因为 getstr
的 (ncurses) 手册页显示
Characters input are echoed only if
echo
is currently on. In that case, backspace is echoed as deletion of the previous character (typically a left motion).
在这种情况下,您可以(取决于您的窗口的组织方式)使用 wattrset
:
Set the “background” set of attributes to attr. This set is initially 0 (no attributes).
“背景”是指窗口属性,它与添加到窗口的文本关联的属性合并。由于 getstr
在它添加的文本中不会有任何属性,因此设置 window 属性可以“解决”您的问题。但请记住,您需要保存原始属性,以便在 getstr
完成后恢复它们。
ncurses curs_attr手册页对此进行了解释。 getstr
函数内部使用 waddch
(与 printw
、addstr
一样),但其手册页没有提及这一点。
关于python - 使用 pythoncurses 更改输入文本的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614665/
我正在Python中使用curses库,我知道获取屏幕尺寸的唯一方法是使用curses.LINES和curses.COLS。但是,即使读取 "KEY_RESIZE" 键,这些值也永远不会更新,如下例所
我正在使用 python 的诅咒包装库开发一个文本游戏。我希望用户输入的文本与游戏输出的文本颜色不同。我在为输出文本定义颜色对时没有遇到任何问题,但我不知道如何更改输入文本以在用户主动键入时显示不同的
我希望用户能够输入每个字符,就像 getch() 的工作方式一样。我还打开了 echo() ,因为我想打印出用户输入的每个字符。但是,我还希望用户能够按退格键,并在按退格键之前按下的键从屏幕上删除,就
我正在使用curses库编写一个游戏。我试图显示一些非标准 Unicode 字符,但遇到了问题。 假设我想显示一个 Unicode 树字符。快速谷歌渲染如下: “🌲”(U+1F332) 但是,当我尝
我正在构建这个简单的应用程序,我注意到当curses运行时,“top”中的CPU负载是100%..这看起来很糟糕。谁能解释一下吗? def Run(self, stdscr): self.sc
我是一名优秀的程序员,十分优秀!