将 KeyCode 对象与 python 中的字符串进行比较

Comparing a KeyCode object to string in python

我正在尝试触发 python 中的按键功能。我正在使用 pynput 库的 listen 函数,它 returns 一个 Keycode 对象。 我已尝试将对象转换为字符串,但以下代码仍然 returns 以下输出(按 'a' 键时):

def on_press(key):
    mod = str(key)
    print(mod)
    print(type(mod))
    print(mod=='a')

我得到:

'a'
< class 'str'>
False

下一步使用:

def on_press(key):
    print(key.char=='a')

上面会打印True.

您的代码无法正常工作,因为:

mod = str(key)
print(mod)

会得到'a',但是对于普通字符串,print('a')只会打印a,它们不是同一个字符串。您可以用 print(len(mod)) & print(len('a'))

确认

顺便说一句,接下来是完整的测试代码:

from pynput.keyboard import Key, Listener
import sys

def on_press(key):
    mod = str(key)
    print(mod)
    print(type(mod))
    print(mod=='a')
    print(key.char=='a')
    print(len(mod))
    print(len('a'))
    sys.exit(0)

def on_release(key):
    pass

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