Python keyboard module error: TypeError: 'NoneType' object is not callable

Python keyboard module error: TypeError: 'NoneType' object is not callable

我的代码是:

import keyboard

pressed = ""

def on_key_press():
    print("Key pressed.")
    global pressed
    # Took me 1 hour to figure out this.
    if charset.chars.__contains__(keyboard.read_key()):
        print("processing slangs...")
        print("*process*")
    else:
        print("registered key.")
        pressed += keyboard.read_key()
    print(pressed)

keyboard.on_press(on_key_press())
keyboard.wait()

我运行它是root。 当我按下一个键时,它会按预期打印该键。 但是,当我在它之后按任意键时,它只是 returns 一个错误,就像这样:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/keyboard/_generic.py", line 22, in invoke_handlers
    if handler(event):
  File "/usr/local/lib/python3.9/dist-packages/keyboard/__init__.py", line 474, in <lambda>
    return hook(lambda e: e.event_type == KEY_UP or callback(e), suppress=suppress)
TypeError: 'NoneType' object is not callable

它会不断打印出这样的错误,不管我按了什么键。 请帮忙

我认为调用 on_key_press 函数时唯一需要删除括号的地方


keyboard.on_press(on_key_press())

给这个:


keyboard.on_press(on_key_press)

我的猜测是方法 keyboard.on_press 将函数作为参数,而不是可调用对象

不阅读文档就像
函数 keyboard.on_press() 调用 回调不是函数。 此代码表明:

import keyboard

def test(a):
    print(a)

keyboard.on_press(test)
keyboard.wait()

当你按随机键时,它会打印出 KeyboardEvent(<key> down)。可以使用 keyboard.read_key().

提取密钥字符串