我究竟做错了什么?
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'时图像会向上移动
假设代码更多,不知道你的错误来自哪里,可能会有一些不同的地方。你是错误的,你来自一个类或函数?如果是这样,尝试将naveY设置为函数内的全局
global naveY
如果您的错误跟踪到函数或类的外部是在导致您错误的行之前定义的naveY?如果是这样的话
naveY = 400
相应地排队
不知道naveY
(你的代码中从未提到过任何地方!)来自哪里,但是这里有一个可能导致异常的错误(使用不同的变量名称):
def key(event):
if str(event.char) == 'w':
coordY = coordY - 5
print coordY
从来没有定义过coordY
(Python知道它是一个局部变量,因为你在函数中分配它),但是你试图从它中减去5 - 什么?! - )
我怀疑这个函数缺少第一个语句global coordY
让Python知道它不是一个局部变量 - 并且你报告的神秘naveY
的问题实际上是这个问题,你只是在你正在显示的代码中做了一些重命名我们,与您获得该例外的代码相比:-)