type (list [0]) возвращает pynput.keyboard._win32.KeyCode - PullRequest
0 голосов
/ 09 сентября 2018

Моя проблема в том, как 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()

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете извлечь символ из нажатой клавиши, используя атрибут char в pynput.keyboard._win32.KeyCode. Другими словами, в вашей функции 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
...