为了账号安全,请及时绑定邮箱和手机立即绑定

修复 NameError: NameError: name 'key_p' 未定义?

修复 NameError: NameError: name 'key_p' 未定义?

慕慕森 2021-11-16 14:38:37
我编写了下面的击键系统,该系统将on_press()函数和on_release()?函数的值返回到名为key_dict. 运行脚本,即使我已经在两个函数中全局定义了它,也会返回一个 NameError。有任何想法吗?谢谢from pynput.keyboard import Key, Listenerfrom datetime import datetimedef on_press(key):    global key_p,key_pt,key_r,key_rt    key_p = key    key_pt = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')    keyall = {'Key_Pressed':key_p, 'Key_Time':key_pt}    return key_p, key_ptdef on_release(key):    global key_p,key_pt,key_r,key_rt    key_r = key    key_rt = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')    keysall = {'Key_Released':key_r, 'Release_Time':key_rt}    return key_r, key_rt    if key == Key.enter:        # Stop listener        return Falsekey_dict = {'Key_Pressed':[key_p],            'Key_Time':[key_pt],            'Key_Released':[key_r],            'Release_Time':[key_rt]}print(key_dict)# Collect events until releasedwith Listener(        on_press=on_press,        on_release=on_release) as listener:    listener.join()
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

Usingglobal告诉 python 使用名为 的全局变量key_p,它不会初始化它。


您应该首先在全局范围内初始化全局变量。然后global在每个函数上使用关键字。


编辑:


key_dict = {'Key_Pressed':[key_p],

            'Key_Time':[key_pt],

            'Key_Released':[key_r],

            'Release_Time':[key_rt]}

key_p未在此处定义,因为您处于全局范围内。key_p在函数内部初始化on_press。


查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信