Animação tkinter canvas

341 views
Skip to first unread message

Inforweb Informática e Internet

unread,
Mar 20, 2015, 8:55:50 AM3/20/15
to python...@googlegroups.com
Olá, criei uma animação simpletes no canvas do tkinter, mas após algumas interações ocorre um erro de sobrecarga, como sou novo no mundo python não sei como
corrigir e nem mesmo encontrar onde está o problema.
segue o código usado.

from tkinter import *
import time

tela
= Tk()
tela
.geometry("500x500")

frame
= Frame(tela,width=500,height=500)
frame
.pack(side="top",fill="both",expand=True)

cv
= Canvas(frame,width="500", height="500", bg="#000000")
cv
.pack()

bolas
=[]

def criabola(ev):
    bolas
.append({'x':ev.x,'y':ev.y})
    cv
.create_oval(ev.x,ev.y,ev.x+10,ev.y+10,fill="#FFFF00",outline='')
    mover
()
   
def mover():
   
if(len(bolas)>0):
        cv
.delete("all")
       
for bola in bolas:
            cx
= bola['x']
            cy
= bola['y']
            index
= bolas.index(bola)
           
if(cy<int(cv['height'])):
                cy
+=5
                cv
.create_oval(cx,cy,cx+10,cy+10,fill="#FFFF00",outline='')
                bolas
[index]={'x':cx,'y':cy}
           
else:
                bolas
.remove(bola)
        tela
.update()
        time
.sleep(0.01)
        mover
()
   

cv
.bind('<Button-1>',criabola)


tela
.mainloop()


Guilherme Medeiros

unread,
Mar 20, 2015, 8:57:59 AM3/20/15
to python...@googlegroups.com
Você está fazendo uso de recursividade.
Isso não é legal, especialmente para este caso de pintar na tela.

Tente resolver seu problema sem chamar MOVER() dentro da função MOVER()


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Guilherme Medeiros

unread,
Mar 20, 2015, 9:13:29 AM3/20/15
to python...@googlegroups.com

Inforweb Informática e Internet

unread,
Mar 22, 2015, 5:53:22 PM3/22/15
to python...@googlegroups.com
certo, com o método after funciona certinho, obrigado pelo auxilio amigo.
Reply all
Reply to author
Forward
0 new messages