mouvement d'un item canvas: Vos avis , usages, conseils vis à vis de after() vs Timer()
Bonjour,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
from tkinter import *
from threading import Timer
def moveTimer(event):
dx=5
dy=5
can.move(rect, dx, dy)
dx+=2
dy+=2
timer = Timer(0.05, lambda: moveTimer(event))
timer.start()
def moveAfter(event):
dx=5
dy=5
can.move(rect, dx, dy)
dx+=2
dy+=2
can.after(50, lambda: moveAfter(event) )
width=400
height=400
x=0
y=0
fen = Tk()
can = Canvas(fen, width=width, height=height, bg="black")
can.grid()
rect = can.create_rectangle(x+5,y+5,x+25, y+25, fill="ivory")
can.bind("<Button-1>", moveTimer)
can.bind("<Button-3>", moveAfter)
fen.mainloop() |
Que diriez-vous à un débutant cherchant à créer un mouvement d'un item sur un canevas?
D'utiliser plutôt un truc ressemblant à la fonction moveTimer() ou un truc style moveAfter() ou une autre technique plus adaptée?
Autrement dit: Quelles sont les différences d'usages qui permettent de s'orienter vers une technique de mouvement plutôt qu'une autre?
(Pour le reste, n'hésitez à corriger, commenter, (voire défoncer l'auteur), sur toute erreur (de fond et/ou de forme) du "code-exemple" ci-dessus)