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

我编写了下面的击键系统,该系统将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()


慕慕森
浏览 191回答 1
1回答

阿晨1998

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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python