你在玩python的时候,有没有想过python怎样实现非缓冲输入?我觉得我用这个做文章名字,没几个人能搜的到,因为不知道非缓冲输入,与缓冲输入的区别。

一般情况下,我们用input()获取用户的输入,当用户输入全部内容,按下回车,输入流承载数据进行传输,这时我们说它是据有缓冲的。

举个例子,比如你的输入是“hello”,当你打入‘h’时,数据并没有进行传送,而是存进buffer里面,等你按回车后,宣告操作结束,它才会一并将所有你输入的数据进行传送。

非缓冲输入,类似于c语言中getche()函数类似的功能。但是c语言是可以直接与硬件联系的,而python却不能(虽然底层还是c)。

就比如我们玩游戏,我们需要它实时的读取我们的操作进行反应,而不是让我们预测游戏内容,先把所有的操作写完,然后看游戏结果。那不就是游戏玩我们了吗,有啥意思。

我没能找到python非缓存输入的方法。不过换种思路可以实现同样的功能。

事件监听。
            (便于演示,加入输入框)

from tkinter import *
def printkey(e):
    print('你按下了:'+e.char)
root = Tk()
entry = Entry(root)
entry.bind('<Key>',printkey)
entry.pack()
root.mainloop()

每当你按下按键时,就会触发,也可以实现相应的功能能,希望对你有帮助。

也就是说通过事件绑定,来获得输入信息。

          

python input 不回车_c语言


 

 

Thanks for watching.

 

 

 

 

后记:

这篇的水分没那么大,适合种稻谷,水仙花之类的作物......。没什么内容,就是一种非缓冲输入的替代形式,一般情况下可能也用不到,写简单游戏的时候或许有用吧,但还有pygame呢。或者自己在写一些整人前端的时候,也可能会根据用户的操作处理些东西,就记得有种方法可以替换类似c语言中的getche()就好了。