Обнаружение ввода ключа в Python - программирование

Обнаружение ввода ключа в Python

Я не знаю, почему Python - это странно, вы не можете найти это, выполнив поиск в google очень легко, но это довольно просто.

Как я могу обнаружить "ПРОБЕЛ" или фактически любую клавишу? Как я могу это сделать:

print('You pressed %s' % key)

Это должно быть включено в ядро ​​python, поэтому, пожалуйста, не связывайте модули, не относящиеся к основному питону.

4b9b3361

Ответ 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()