我编写了下面的击键系统,该系统将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。
添加回答
举报
0/150
提交
取消