Python 覆盖内置函数input()以使用空格键提交

Python 覆盖内置函数input()以使用空格键提交,python,c,python-3.x,linux,cython,Python,C,Python 3.x,Linux,Cython,Python的方法提示用户在终端中输入字符串。他们使用ENTER键提交字符串 我想覆盖该方法并将键从回车替换为空格键 我该怎么做 谢谢不幸的是,我认为这在普通python中是无法实现的,但是您可以尝试使用curses库禁用输入缓冲(等待回车)并逐个字符读取输入。完成此操作后,您可以通过将字符读入字符串并在按下空格键时将该字符串注册到中心位置来轻松实现空格键提交系统。No。您必须编写自己的函数。在Linux和Windows上执行此操作的方法不同。请注意,换行处理是由操作系统完成的,而不是Pytho

Python的方法提示用户在终端中输入字符串。他们使用ENTER键提交字符串

我想覆盖该方法并将键从回车替换为空格键

我该怎么做


谢谢

不幸的是,我认为这在普通python中是无法实现的,但是您可以尝试使用curses库禁用输入缓冲(等待回车)并逐个字符读取输入。完成此操作后,您可以通过将字符读入字符串并在按下空格键时将该字符串注册到中心位置来轻松实现空格键提交系统。

No。您必须编写自己的函数。在Linux和Windows上执行此操作的方法不同。请注意,换行处理是由操作系统完成的,而不是Python。您需要使用操作系统特定的功能来更改终端模式,以便可以按字符而不是按行处理输入。您需要实现所有您自己的输入编辑。更好的选择是使用该模块。它允许您自定义密钥绑定,因此您可以配置空间以提交行。@stackoverflowuser我了解他想要什么。但是由于
input()
可能只是在内部调用
fgets()
,这完全取决于终端驱动程序的工作方式。@stackoverflowuser可能,但它将非常复杂。正如我所说,他需要将终端置于原始模式,并自己实现所有输入编辑。你还需要实现退格、箭头键等@Barmar不太。。。禁用输入缓冲时,唯一的区别是在每个字符后刷新
stdin
,而不是在
\n
上。退格键和箭头键生成ascii转义序列,终端本身可以处理。如果您正在逐字符读取,并且用户键入箭头键,则您将收到转义序列。您需要将其转换为curses中适当的光标移动操作。@Barmar我不太熟悉ascii转义序列或python编程语言,但这仍然回避了问题;你能做到吗?你如何处理这些特定的转义序列,而不为你的程序专门重新编码终端输入系统(箭头键和退格与覆盖字符串和调用
move(x-1,y)
)相协调)?我从来没有做过任何curses编程,我认为它有一些更高级别的功能来帮助实现这一点。但我建议使用
GNU readline
似乎简单得多。