我在代码的开头有这个变量:
enterActive = False
然后,最后,我有这个部分:
def onKeyboardEvent(event):
if event.KeyID == 113: # F2
doLogin()
enterActive = True
if event.KeyID == 13: # ENTER
if enterActive == True:
m_lclick()
return True
hookManager.KeyDown = onKeyboardEvent
hookManager.HookKeyboard()
pythoncom.PumpMessages()
当我先按Enter键并且先按F2键时出现此错误:
UnboundLocalError: local variable 'enterActive' referenced before assignment
我知道为什么会这样,但我不知道如何解决它......
人
答案 0 :(得分:6)
见Global variables in Python。在onKeyboardEvent
内,enterActive
当前是指局部变量,而不是您在函数外定义的(全局)变量。你需要把
global enterActive
在函数的开头使enterActive
引用全局变量。
答案 1 :(得分:2)
方法1 :使用局部变量。
def onKeyboardEvent(event):
enterActive = false
...
方法2 :明确声明您正在使用全局变量enterActive
。
def onKeyboardEvent(event):
global enterActive
...
因为函数enterActive = True
中有onKeyboardEvent
行,所以函数中对enterActive
的任何引用都默认使用局部变量,而不是全局变量。在您的情况下,局部变量在使用时未定义,因此是错误。
答案 2 :(得分:1)
enterActive = False
def onKeyboardEvent(event):
global enterActive
...
答案 3 :(得分:0)
也许这就是答案:
Using global variables in a function other than the one that created them
您正在写一个全局变量,并且必须声明您知道 通过在开头添加“全局enterActive”你正在做什么 你的职能:
def onKeyboardEvent(event):
global enterActive
if event.KeyID == 113: # F2
doLogin()
enterActive = True
if event.KeyID == 13: # ENTER
if enterActive == True:
m_lclick()
return True
答案 4 :(得分:0)
也许您正在尝试在另一个函数中声明enterActive而您没有使用全局语句使其成为全局函数。在声明变量的函数中的任何位置,添加:
global enterActive
这将在函数内声明它为全局。