Обнаружение ввода ключа в Python
Я не знаю, почему Python - это странно, вы не можете найти это, выполнив поиск в google очень легко, но это довольно просто.
Как я могу обнаружить "ПРОБЕЛ" или фактически любую клавишу?
Как я могу это сделать:
print('You pressed %s' % key)
Это должно быть включено в ядро python, поэтому, пожалуйста, не связывайте модули, не относящиеся к основному питону.
Ответы
Ответ 1
Вы можете сделать небольшое приложение 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()
Ответ 2
Использовать Tkinter
для этого есть тонна учебников.
в основном, вы можете создавать события. Вот ссылка на отличный сайт!
Это облегчает захват кликов.
Кроме того, если вы пытаетесь создать игру, Tkinter также имеет графический интерфейс.
Хотя, я бы не рекомендовал Python для игр вообще, это может быть забавный эксперимент.
Удачи!
Ответ 3
Ввод ключа - это предопределенное событие. Вы можете захватывать события, присоединяя event_sequence
(s) к event_handle
(s), используя один или несколько существующих методов привязки (bind
, bind_class
, tag_bind
, bind_all
). Для этого:
- определить метод
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 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()