【发布时间】:2013-07-22 20:20:06
【问题描述】:
(2013 年) 不知道为什么 Python 这么奇怪,在 google 上搜索也找不到这个,但是很简单。
如何检测“SPACE”或任何键? 我该怎么做:
print('You pressed %s' % key)
这应该包含在python核心中,所以请不要链接与核心python无关的模块。
【问题讨论】:
标签: python input tkinter keyboard
(2013 年) 不知道为什么 Python 这么奇怪,在 google 上搜索也找不到这个,但是很简单。
如何检测“SPACE”或任何键? 我该怎么做:
print('You pressed %s' % key)
这应该包含在python核心中,所以请不要链接与核心python无关的模块。
【问题讨论】:
标签: python input tkinter keyboard
你可以制作一个小 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()
【讨论】:
getch 配方(例如 this one)可能会更好。
使用 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 捕获特定小部件上的'<KeyPress>' 和'<KeyRelease>' 事件的示例(root):
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()
【讨论】:
使用内置:(不需要 tkinter)
s = input('->>')
print(s) # what you just typed); now use if's
if s == ' ':
...
【讨论】: