type(list[0]) 返回pynput.keyboard._win32.键代码



我的问题是pynput如何返回数据(我希望你会这样说?

所以我要做的是让听众记录键盘输入,然后使用添加到列表中的字母在单词中制作字符串。虽然,字母似乎不是字符串。相反,他们以pynput.keyboard._win32.KeyCode的身份返回

有没有办法将其转换为python可读字符串或其他东西?
就像如果:我输入了f, t, w

print(type(list[0]), word)
return 'f', ftw

到目前为止,它的结果是

f[] pressed
t['f'] pressed
w['f', 't'] pressed
['f', 't', 'w'] pressed
['f', 't', 'w'] <class 'pynput.keyboard._win32.KeyCode'> # then basically nothing for word  
[] pressed

from pynput import keyboard

list = []
word = ''.join(list)

def press(key): 
print(list, 'pressed') 
if key is not keyboard.Key.space:
list.append(key)
elif keyboard.Key.space is key:
pass
elif keyboard.Key.enter is key:
pass

def release(key):
if key == keyboard.Key.space:
print(type(list[0]), word)
if word in hkey:
func()
list.clear()
with keyboard.Listener(on_press=press, on_release=release) as listener:
listener.join()

您可以使用pynput.keyboard._win32.KeyCodechar属性从按下的键中提取字符。换句话说,在press函数中,您将key.char追加到列表中。另外,我会避免使用list作为变量名。

def press(key):
print(_list, 'pressed')
if key is not keyboard.Key.space:
_list.append(key.char)         # <-- Note: key.char
elif keyboard.Key.space is key:
pass
elif keyboard.Key.enter is key:
pass