TypeError:on_press()缺少1个必需的位置参数:'key'

时间:2017-06-27 21:36:54

标签: python keyboard

我对编程很新,我希望我能准确地描述我的问题。 我想监视输入我的键盘,但我得到这个TypeError:on_press()缺少1个必需的位置参数:'key'。

当我单独实现该功能时,它可以正常工作。

from pynput import keyboard

def on_press(key):
keys=[]
try: k = key.char # single-char keys
except: k = key.name # other keys
#if key == keyboard.Key.esc: return False # stop listener
if k in ['down', 'left', 'right',"up"]: # keys interested
    # self.keys.append(k) # store it in global-like variable
    #print('Key pressed: ' + k)
    keys.append(k)

return keys

lis = keyboard.Listener(on_press=on_press)
lis.start() # start to listen on a separate thread
lis.join() # no this if main thread is polling self.keys

...但是如果我从主

调用该函数
pressed_key = on_press()

出现以下错误:

File "<ipython-input-7-c3f93c434982>", line 80, in main
pressed_key = on_press()

TypeError: on_press() missing 1 required positional argument: 'key'

如果您有任何想法,请告诉我!

1 个答案:

答案 0 :(得分:0)

正如您在on_press函数中定义的那样。它需要一个名为key的参数才能工作。当你在没有参数的情况下从main调用它时会引发一个类型错误异常,告诉你缺少参数(key)。

当你将函数传递给keyboard.Listener中的on_press键参数时,它会起作用,因为每次按下一个键时它都会调用该函数,并且它会将你按下的键传递给函数。