2015-01-17 170 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問題其實這個非常問題,你只是做了一些重命名的代碼你向我們展示,你得到了:-)