修复NameError:NameError:名称'key_p'未定义?

问题描述 投票:0回答:1

我编写了下面的按键系统,它将on_press()函数和on_release()?函数的值返回到一个名为key_dict的字典中。运行脚本,返回一个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()
python function keystroke
1个回答
0
投票

使用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_pon_press函数内初始化。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.