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

时间:2019-01-23 05:13:28

标签: python keycode pynput

我正在尝试在python中的按键上触发功能。我正在使用Pynput库的listen函数,该函数返回Keycode对象。 我尝试将对象转换为字符串,但以下代码仍返回以下输出(按“ a”键时):

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

我得到:

'a'
< class 'str'>
False

1 个答案:

答案 0 :(得分:0)

使用下一个:

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()