类型(列表[0])返回pynput.keyboard.\u win32.KeyCode

2024-05-12 18:13:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

所以我要做的是让听者记录键盘输入,然后使用添加到列表中的字母在word中生成字符串。尽管如此,这些字母似乎不是字符串。相反,它们返回为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()

Tags: key字符串releaseifis字母spacelist
1条回答
网友
1楼 · 发布于 2024-05-12 18:13:17

您可以使用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

相关问题 更多 >