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