gpt4 book ai didi

python - getch() 返回错误字符

转载 作者:行者123 更新时间:2023-11-28 22:50:58 27 4
gpt4 key购买 nike

我在使用 getch() 时遇到问题curses 的功能图书馆。假设我们有以下程序:

import curses

def main(stdscr):
while 1:
c = stdscr.getch()
stdscr.addstr(chr(c) + ": " + str(c) + "\n")
curses.wrapper(main)

让我们运行它,并输入以下字符:a , <backspace> , œ

那么输出是:

a: 97
ć: 263
Å: 197

如您所见,a字符被正确使用。但是,其他人不是。我只想获得退格键 '\b'和 unicode 字符 œ , 但我们得到了其他东西。

为什么 getch()以这种方式行事,我怎样才能获得所需的行为?

编辑:

我要强调的是,这不是打印字符的问题,而是读取字符的问题。即,运行 stdscr.addstr('œ')确实打印 œ .

最佳答案

在 Python 3.3 中 window.get_wch 添加了功能。它可以正确处理所有这些字符。

如果您阅读 window.getch 的文档,您会注意到它并未声称支持非 ASCII 可打印字符。它只是证明它可以处理非 ASCII 按键,例如功能键或键盘键。

编辑:

使用 window.get_wch 时, 字符(例如 'a''ă''好''\n''\t' )作为字符串返回。功能键以整数形式返回(例如 265274 )。这是一个要运行的新示例。尝试使用您想要识别的不同键来查看它们的值是如何返回的。打印出来的数据格式为:[repr]: [type] .

def main(stdscr):
while 1:
c = stdscr.get_wch()
stdscr.addstr("%s: %s\n" % (repr(c), type(c)))

这是我输入 a 时得到的结果, œ , <enter> , <backspace> , 和 <F1> :

'a': <class 'str'>
'œ': <class 'str'>
'\n': <class 'str'>
'\x7f': <class 'str'>
265: <class 'int'>

如果返回一个整数,你可以通过 curses.keyname 找到按下的键名:

>>> curses.keyname(265)
b'KEY_F(1)'

关于python - getch() 返回错误字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157426/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com