Zdravim. ve svym programku potrebuju, aby ctverec po stisknuti klavesi Dolu se posunul o 20 pixelu:
from Tkinter import *
okno = Tk()
poziceX = 0
poziceY = 0
plocha = Canvas(okno,width=200,height=200)
plocha.pack()
def vykresliPole():
for v in range(1,10):
plocha.create_line(v*20,0,v*20,200)
plocha.create_line(0,v*20,200,v*20)
vykresliPole()
pozice = plocha.create_rectangle(poziceX,poziceY,poziceX+19,poziceY+19,fill="yellow")
def dolu(event):
poziceX = poziceX+20
poziceY = poziceY+20
plocha.coords(pozice,poziceX,poziceY)
okno.bind('<Down>',dolu)
mainloop()
Přeloží se v pohodě, ovšem když stisknu šipku dolů, tak se vyppíše chyba:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.3/lib-tk/Tkinter.py", line 1345, in __call__
return self.func(*args)
File "dtok.py", line 20, in dolu
poziceX = poziceX+20
UnboundLocalError: local variable 'poziceX' referenced before assignment
Nevím si s tím už rady, takže kdybyste věděli.. Díky!