gpt4 book ai didi

python - 按下 escape 时取消输入

转载 作者:行者123 更新时间:2023-11-28 17:04:32 25 4
gpt4 key购买 nike

我想要一个像 input() 一样工作的函数,但是当按下 Esc 键时返回 None(例如)按下。

我尝试执行以下操作:

def input(t):
print(t)
text = ""
while True:
char = msvcrt.getche();

if char == chr(27).encode():
return None

if char == b'\r':
return text

try:
text += char.decode()
except:
pass

这在大多数情况下都有效,但问题是退格键不起作用,而且在按非字符键(如箭头键)或组合 Ctrl+ 时,我会得到奇怪的字符C。所以 getche 可能不是我的问题的答案。

我的印象是这将是一个常见问题,但我一直没能找到解决方案。

最佳答案

I was under the impression that this would be a common problem

不,不是。谈到 io 时,有两种常见的习语。首先称为面向行。它可用于批处理模式程序,其中标准输入可重定向到文件或管道。在这种模式下,程序本身甚至不应该尝试知道它是从真实键盘还是从文件读取(或多或少,密码输入是异常(exception))。低级驱动程序或输入库可以添加一些好东西,例如行版(退格处理),但这对程序员来说是不能直接访问的,而且在任何情况下都不能移植。

第二种模式用于 GUI。在这里,大部分事情都在程序员的控制之下:输入字段在屏幕上的位置、它们的大小,以及可选的特殊字符处理。更准确地说,一般是通过tkinter(tk)、pyqt或pyside(Qt)之类的图形库进行处理,或者...

你要的是中庸之道。初学者尝试探索它是很常见的,但一段时间后,我们都意识到对于现实世界的程序来说,这两个常见的习语就足够了。

你可能会发现这个答案比技术更哲学,理论上改进行版没有什么坏处,但在实际程序中,我从来没有找到任何真正的理由来超越当前可用的。

关于python - 按下 escape 时取消输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917175/

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