我編寫了下面的擊鍵系統(tǒng),該系統(tǒng)將on_press()函數(shù)和on_release()?函數(shù)的值返回到名為key_dict. 運(yùn)行腳本,即使我已經(jīng)在兩個函數(shù)中全局定義了它,也會返回一個 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貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個贊
Usingglobal告訴 python 使用名為 的全局變量key_p,它不會初始化它。
您應(yīng)該首先在全局范圍內(nèi)初始化全局變量。然后global在每個函數(shù)上使用關(guān)鍵字。
編輯:
key_dict = {'Key_Pressed':[key_p],
'Key_Time':[key_pt],
'Key_Released':[key_r],
'Release_Time':[key_rt]}
key_p未在此處定義,因?yàn)槟幱谌址秶鷥?nèi)。key_p在函數(shù)內(nèi)部初始化on_press。
添加回答
舉報
0/150
提交
取消