Привязка клавиши клавиатуры к функции - Python KeyListener - PullRequest
0 голосов
/ 27 февраля 2019

«Вы нажали клавишу ввода!»

Всякий раз, когда я нажимаю клавишу (z), должна выполняться функция:

#Pseudocode:
bind(<Enter>, function_x)

В настоящее время я работаю над программой на Python, которая будет работать в константном цикле .Он работает только на консоли (без графического интерфейса) , но все же мне нужно иметь возможность взаимодействовать с программой в любое время без программы запрашивая ввод.

1 Ответ

0 голосов
/ 28 февраля 2019

Несколько модулей решают эту проблему

Pynput (pip install pynput)

Простой модуль для обработки и управления общими входами

from pynput import keyboard
from pynput.keyboard import Key

def on_press(key):
    #handle pressed keys
    pass

def on_release(key):
    #handle released keys
    if(key==Key.enter):
        function_x()

with keyboard.Listener(on_press=on_press,on_release=on_release) as listener:
    listener.join()

(см. документы pynput )


Клавиатура (pip install keyboard)

Простой модуль длямоделирование и обработка ввода с клавиатуры

keyboard.add_hotkey('enter', lambda: function_x())

(см. Документация по клавиатуре )


Tkinter

Интегрированный модуль пользовательского интерфейса, может отслеживать входы в сфокусированном потоке

from tkinter import Tk
root = Tk() #also works on other TK widgets
root.bind("<Enter>", function_x)
root.mainloop()

Имейте в виду: Все эти решения так или иначе используют Threading.Возможно, вам не удастся выполнить другой код после того, как вы начали слушать ключи.

Полезные темы: KeyListeners , Связывание в Tkinter

Не стесняйтесь добавлять больше решений

...