当我使用时
ch = wnd.getch()
在Python下的curses
中,我可以捕获wnd.getch
返回10的回车键。但是当我替换getch
时它不起作用> 通过 get_wch
。 get_wch
有什么问题吗?
最佳答案
函数getch
和get_wch
有不同的接口(interface):
getch
返回一个字符get_wch
返回一个状态代码,并通过作为参数传递的指针设置一个宽字符。
它们使用不同的接口(interface),因为特殊键(例如 KEY_HOME
)可以用 getch
处理为超出“正常”(8 位)范围的“额外”字符) 人物。您无法使用宽字符执行此操作(不太容易,因为宽字符范围的结尾不太明确),因此 get_wch 使用状态代码来判断它通过指针设置的值是否为宽字符或特殊键。
虽然手册页足够清楚,但Python开发人员在将该功能添加到curses包装器时并没有注意到这种区别。 Python 文档中的描述对应于getch
,而不是get_wch
:
Issues #15785: curses.get_wch() returns keypad codes incorrectly
该错误报告表明已对 python 3.4 应用了修复。16.10. curses — Terminal handling for character-cell displays
-
window.get_wch([y, x])
Get a wide character. Return a character for most keys, or an integer for function keys, keypad keys, and other special keys.
New in version 3.3.
进一步阅读:
关于python - 如何让Python get_wch捕获Enter键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191837/