2017-06-27 127 views
0

即时编程相当新颖,我希望我可以准确地描述我的问题。 我想监视输入我的键盘,但我得到这个TypeError:on_press()缺少1所需的位置参数:'钥匙'。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

错误消息告诉你缺少一个参数。 'on_press()'函数采用被按下的键,而你没有通过该键。 – kindall

+0

请正确缩进您的代码 – jacoblaw

回答

0

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

它在将函数传递给keyboard.Listener中的on_press键参数时起作用,因为每次按下键时侦听器都会调用该函数,并且它将您按下的键传递给该函数。

相关问题