Fixing NameError: NameError: name 'key_p' is not defined?
Fixing NameError: NameError: name 'key_p' is not defined?
我已经编写了下面的击键系统,returns 来自 on_press()
函数和 on_release()?
函数的值到一个名为 key_dict
的字典中。 运行 脚本,returns 一个 NameError,即使我已经在两个函数中全局定义了它。
有什么想法吗?
谢谢
from pynput.keyboard import Key, Listener
from datetime import datetime
def 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_pt
def 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 False
key_dict = {'Key_Pressed':[key_p],
'Key_Time':[key_pt],
'Key_Released':[key_r],
'Release_Time':[key_rt]}
print(key_dict)
# Collect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
Using global
告诉 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
函数中初始化。
我已经编写了下面的击键系统,returns 来自 on_press()
函数和 on_release()?
函数的值到一个名为 key_dict
的字典中。 运行 脚本,returns 一个 NameError,即使我已经在两个函数中全局定义了它。
有什么想法吗? 谢谢
from pynput.keyboard import Key, Listener
from datetime import datetime
def 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_pt
def 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 False
key_dict = {'Key_Pressed':[key_p],
'Key_Time':[key_pt],
'Key_Released':[key_r],
'Release_Time':[key_rt]}
print(key_dict)
# Collect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
Using global
告诉 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
函数中初始化。