17

(2013 年)我不知道为什么 Python 这么奇怪,你在 google 中搜索很难找到这个,但它很简单。

如何检测“SPACE”或实际上任何键?我怎样才能做到这一点:

print('You pressed %s' % key)

这应该包含在 python 核心中,所以请不要链接与核心 python 无关的模块。

4

4 回答 4

23

你可以制作一个小 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()
于 2013-07-23T16:31:22.920 回答
3

使用 Tkinter 有大量的在线教程。基本上,您可以创建事件。这是一个很棒的网站的链接!这使得捕获点击变得容易。此外,如果您正在尝试制作游戏,Tkinter 也有一个 GUI。虽然,我根本不推荐将 Python 用于游戏,但这可能是一个有趣的实验。祝你好运!

于 2013-07-23T17:02:57.043 回答
2

按键输入是预定义的事件。您可以通过使用一种或多种现有绑定方法(、、、 )将event_sequence(s)附加到 (s) 来捕获事件。为了做到这一点:event_handlebindbind_classtag_bindbind_all

  1. 定义一个event_handle方法
  2. 从事件列表中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()
于 2018-01-29T23:58:08.480 回答
1

使用内置:(不需要 tkinter)

s = input('->>')
print(s) # what you just typed); now use if's 
if s == ' ':
 ...
于 2020-10-30T10:49:01.660 回答