【问题标题】:TypeError: on_press() missing 1 required positional argument: 'key'类型错误:on_press() 缺少 1 个必需的位置参数:'key'
【发布时间】:2017-06-27 21:36:54
【问题描述】:

我对编程很陌生,我希望我能准确地描述我的问题。 我想监视我的键盘输入,但我得到了这个 TypeError: on_press() missing 1 required positional argument: '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'

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

【问题讨论】:

  • 错误消息告诉您缺少参数。 on_press() 函数获取按下的键,而您没有传递它。
  • 请正确缩进代码

标签: python keyboard


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 2022-01-11
    • 1970-01-01
    • 2018-09-12
    • 2021-08-05
    • 2021-07-06
    • 2021-08-05
    • 2017-07-23
    相关资源
    最近更新 更多