2015-01-17 44 views
0

谁能告诉我什么我做错了什么:局部变量

from Tkinter import * 

coordY = 400 

win = Tk() 

def key(event): 
    if str(event.char) == 'w': 
     coordY = coordY - 5 
     print coordY 

def callback(event): 
    canvas.focus_set() 


canvas = Canvas(win, width=800, height=450) 
canvas.bind("<Key>", key) 
canvas.bind("<Button-1>", callback) 
canvas.pack() 

photo = PhotoImage(file="image.gif") 

canvas.create_image(400, coordY, image=photo) 

naveY = 400 

win.mainloop() 

UnboundLocalError:局部变量“naveY”分配之前引用

我想,当我按“W”然后图像就向上移动

+3

是异常的代码相比,那真的是整个事情?除了赋值之外,没有提到'naveY'。 – Barmar

回答

0

不知道在您的错误来自假定那里有更多的代码,可能会有几个不同的地方。你是否错误地从课堂或功能中得到了答案?如果是这样尝试设置naveY作为一个全球性的功能

global naveY 

如果你的错误跟踪到一个函数或类以外的内部naveY前行定义的多数民众赞成你造成的错误?如果是移动你的

naveY = 400 

线相应

0

不知道从哪里naveY(从来没有在你的代码的任何地方提到的!)从弹簧,但这里有一个错误,你有可能会导致异常(使用不同的变量名):

def key(event): 
    if str(event.char) == 'w': 
     coordY = coordY - 5 
     print coordY 

coordY从未定义(Python知道它是一个局部变量,因为你在函数中分配给它),但是你想从它减去5 - 什么 - )

?!

我怀疑这个功能缺少第一条语句global coordY让Python的知道,这不是一个局部变量 - 和你的报道与玄naveY问题其实这个非常问题,你只是做了一些重命名的代码你向我们展示,你得到了:-)