Zmena pozice – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zmena pozice – Python – Fórum – Programujte.comZmena pozice – Python – Fórum – Programujte.com

 

Alan0
Věrný člen
15. 2. 2007   #1
-
0
-

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!

Nahlásit jako SPAM
IP: ...–
PSP user|Web developer|C4D user||Maya Lamer|Photoshop User|Guitar player
15. 2. 2007   #2
-
0
-

To Al:Zkus tohle:

from Tkinter import *


okno = Tk()
global pozice,poziceX,poziceY,plocha
poziceX = 0
poziceY = 0

plocha = Canvas(okno,width=200,height=200)
plocha.pack()

def vykresliPole():
global plocha
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):
global poziceX,poziceY,pozice,plocha
poziceY=poziceY+20
plocha.coords(pozice,0,poziceY,20,poziceY+20)


okno.bind('<Down>',dolu)

mainloop()

Zapomel si na globalni promenne a taky na to,ze u "plocha.coords" musis zadat bud ctyri souradnice nebo zadnou

Nahlásit jako SPAM
IP: ...–
Alan0
Věrný člen
15. 2. 2007   #3
-
0
-

Děkuji mnohokrát!

Nahlásit jako SPAM
IP: ...–
PSP user|Web developer|C4D user||Maya Lamer|Photoshop User|Guitar player
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý