Обнаружение ввода с клавиатуры - PullRequest
0 голосов
/ 06 ноября 2018

Я довольно плохо знаком с Python и пытаюсь определить, когда нажата клавиша f, с помощью библиотеки клавиатуры. Это код, который я пытаюсь запустить

import keyboard

keyboard.on_press_key('f',here())

def here():
    print('a')

Однако, при указании здесь () в качестве обратного вызова, я получаю ошибку с именем не определено при сборке

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Просто двигайтесь вверх по вашей функции here() объявление так:

import keyboard

def here():
    print('a')

keyboard.on_press_key('f', here())

в противном случае here() еще не объявлено, следовательно, ваша ошибка.

NameError: глобальное имя '---' не определено, Python знает цели определенных имен (таких как имена встроенных функций, таких как печать). Другие имена определены в программе (например, переменные). Если Python встречает имя, которое он не распознает, вы, вероятно, получите эту ошибку. Некоторые распространенные причины этой ошибки:

Забыть присвоить переменной значение, прежде чем использовать ее в другой оператор Неправильное написание имени встроенной функции (например, ввод «inpit» вместо «input»)

Для интерпретатора Python в вашем случае, когда он находится на линии:

keyboard.on_press_key('f',here())

он не знает, что такое here(), потому что его еще нет в памяти.

Пример:

$ cat test.py 
dummy_call()

def dummy_call():
    print("Foo bar")
$ python test.py 
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    dummy_call()
NameError: name 'dummy_call' is not defined



$ cat test.py 
def dummy_call():
    print("Foo bar")

dummy_call()
$ python test.py 
Foo bar
0 голосов
/ 06 ноября 2018

Когда вы звоните here(), он еще не определен, поэтому поместите объявление here() над вашим кодом.

Кроме того, поскольку here должен быть обратным вызовом, вам нужно передать его в on_press_key в качестве ссылки на функцию.

import keyboard

def here():
    print('a')

keyboard.on_press_key('f', here)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...