将 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()
我正在尝试触发 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()