当我使用
ch = wnd.getch()
在Python下的
curses
中,我可以捕获wnd.getch
返回10的回车键。但是,当我用getch
替换get_wch
时,它不起作用。 get_wch
有什么问题吗? 最佳答案
函数getch
和get_wch
具有不同的接口:getch
返回一个字符get_wch
返回状态码,并通过作为参数传递的指针设置宽字符。
它们使用不同的接口,因为特殊键(例如KEY_HOME
)可以用getch
作为超出“正常”(8位)字符范围的“额外”字符来处理。您不能使用宽字符来做到这一点(不容易,因为宽字符范围的结尾不太明确),因此get_wch
使用状态代码来判断它通过指针设置的值是宽字符还是特殊键。
尽管手册页足够清晰,但是当将功能添加到curses包装器时,python开发人员并未注意到这一区别。 Python文档中的描述对应于getch
而不是get_wch
:
Issues #15785: curses.get_wch() returns keypad codes incorrectly
错误报告表明已对python 3.4进行了修复。
16.10. curses — Terminal handling for character-cell displayswindow.get_wch([y, x])
变得宽容。对于大多数键,返回一个字符,对于功能键,小键盘键和其他特殊键,返回一个整数。
版本3.3中的新功能。
进一步阅读:getch
, wgetch
, mvgetch
, mvwgetch
, ungetch
, has_key
- get (or push back) characters from curses terminal keyboardget_wch
, wget_wch
, mvget_wch
, mvwget_wch
, unget_wch
- get (or push back) a wide character from curses terminal keyboard
关于python - 如何使Python get_wch捕获Enter键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19191837/