我不知道为什么Python很奇怪,你不能通过在google中搜索很容易找到它,但它很简单。在Python中检测键输入
如何检测'SPACE'或实际上是否有任何键? 我怎样才能做到这一点:
print('You pressed %s' % key)
这应包括在Python的内核,所以请不要链接不相关的核心Python模块。
我不知道为什么Python很奇怪,你不能通过在google中搜索很容易找到它,但它很简单。在Python中检测键输入
如何检测'SPACE'或实际上是否有任何键? 我怎样才能做到这一点:
print('You pressed %s' % key)
这应包括在Python的内核,所以请不要链接不相关的核心Python模块。
你可以做一个小的Tkinter应用:
import Tkinter as tk
def onKeyPress(event):
text.insert('end', 'You pressed %s\n' % (event.char,))
root = tk.Tk()
root.geometry('300x200')
text = tk.Text(root, background='black', foreground='white', font=('Comic Sans MS', 12))
text.pack()
root.bind('<KeyPress>', onKeyPress)
root.mainloop()
使用Tkinter的 有一吨的教程在网上的这个。基本上,你可以创建事件。这是一个伟大的网站link! 这可以很容易地捕捉点击。另外,如果你想制作游戏,Tkinter也有一个GUI。 虽然,我不会推荐Python的游戏,但它可能是一个有趣的实验。 祝你好运!
键输入是一个预定义的事件。您可以通过使用一种或多种现有绑定方法(bind
,bind_class
,tag_bind
,bind_all
)将event_sequence
(s)附加到event_handle
(s)来捕获事件。为了做到这一点:
event_handle
方法当一个事件发生的情况下,一个事件(event_sequence
),所有这些结合方法的隐式调用event_handle
方法,同时传递一个Event
对象,其中包含有关发生的事件的具体信息作为参数。
为了检测键输入,可以先捕获所有的'<KeyPress>'
或'<KeyRelease>'
事件,然后通过使用event.keysym
属性找出使用的特定密钥。
下面是一个例子使用bind
捉对一个特定的微件(root
)二者'<KeyPress>'
和'<KeyRelease>'
事件:
try: # In order to be able to import tkinter for
import tkinter as tk # either in python 2 or in python 3
except ImportError:
import Tkinter as tk
def event_handle(event):
# Replace the window's title with event.type: input key
root.title("{}: {}".format(str(event.type), event.keysym))
if __name__ == '__main__':
root = tk.Tk()
event_sequence = '<KeyPress>'
root.bind(event_sequence, event_handle)
root.bind('<KeyRelease>', event_handle)
root.mainloop()
不使用Tk的需要的图形窗口?我正在研究嵌入式系统。下面的sys.strin.read()是诱人的,但你需要按回车键。 – user391339
@ user391339:我认为Tk需要一个窗口系统或虚拟显示器。对于嵌入式系统,'getch'配方如[this one](http://stackoverflow.com/a/21659588/190597)可能会更好。 – unutbu
请注意,这只适用于Python 3.x –