Problème de "trainée" lors du déplacement d'un objet tkinter
Kindo
-
Kindo -
Kindo -
Bonsoir tout le monde,
Je rencontre un problème en programmant une animation toute simple sur Python. En effet, lorsque je déplace le cercle vers la gauche, celui-ci laisse une trainée rouge qui ne s'efface que si l'on revient dessus. C'est assez embêtant. Y'a-t-il une solution svp ?
Je rencontre un problème en programmant une animation toute simple sur Python. En effet, lorsque je déplace le cercle vers la gauche, celui-ci laisse une trainée rouge qui ne s'efface que si l'on revient dessus. C'est assez embêtant. Y'a-t-il une solution svp ?
from tkinter import *
x0,y0,x1,y1=(330,210,385,265)
# Mouvement
def right(event):
dx=10
dy=0
cnv.move(cercle,dx,dy)
def left(event):
dx=-10
dy=0
cnv.move(cercle,dx,dy)
def up(event):
dx=0
dy=-10
cnv.move(cercle,dx,dy)
def down(event):
dx=0
dy=10
cnv.move(cercle,dx,dy)
# Paramètres Fenêtre
root=Tk()
root.title('Animation')
root.geometry('800x600+120+20')
root.config(bg='grey')
# Caneva
cnv=Canvas(root,bg='lightgrey',width='700',height='450')
cnv.pack(pady=15)
# Cercle
cercle=cnv.create_oval(x0,y0,x1,y1,fill='red',width=2)
# Evenements
root.bind('<Right>', right)
root.bind('<Left>', left)
root.bind('<Up>', up)
root.bind('<Down>', down)
root.mainloop()
A voir également:
- Problème de "trainée" lors du déplacement d'un objet tkinter
- Mesurer un objet - Guide
- Trouver objet avec photo - Guide
- Vous ne pouvez pas déplacer des objets en dehors de la feuille - Forum Excel
- Mes deplacement - Guide
- Vente objet occasion entre particulier - Guide
4 réponses
yg_be
Messages postés
23437
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 587
bonjour,
je ne vois aucune trainée quand je teste cela.
je ne vois aucune trainée quand je teste cela.
Je viens d'essayer mais ça ne change pas grand chose à part la couleur des trainées qui varie en fonction de la couleur du cercle.
Je pense que le problème vient de l'IDE en lui-même puisque vous ne rencontrez pas ce problème lors de l'exécution du programme.
Je pense que le problème vient de l'IDE en lui-même puisque vous ne rencontrez pas ce problème lors de l'exécution du programme.
Bonsoir,
Sans nul doute cela vient de ton environnement edupython.
Tente d'ajouter un
Sinon, tu peux tout simplement au lieu d'utiliser move, détruire le précédent cercle et en créer un nouveau.
Sans nul doute cela vient de ton environnement edupython.
Tente d'ajouter un
cnv.update_idletasks()après la ligne des move dans tes fonctions, mais je ne pense pas que cela change vraiment le comportement bogué de ton IDE.
Sinon, tu peux tout simplement au lieu d'utiliser move, détruire le précédent cercle et en créer un nouveau.
from tkinter import *
# Mouvement
def right(event):
coords[0] += 10
coords[2] += 10
circle_create()
def left(event):
coords[0] -= 10
coords[2] -= 10
circle_create()
def up(event):
coords[1] -= 10
coords[3] -= 10
circle_create()
def down(event):
coords[1] += 10
coords[3] += 10
circle_create()
def circle_create():
global cercle_id
cnv.delete(cercle_id)
cercle_id = cnv.create_oval(coords, fill='red', width=2)
# Paramètres Fenêtre
root = Tk()
root.title('Animation')
root.geometry('800x600+120+20')
root.config(bg='grey')
# Caneva
cnv = Canvas(root,bg='lightgrey',width='700',height='450')
cnv.pack(pady=15)
coords = [330,210,385,265]
# Cercle
cercle_id = 0
circle_create()
# Evenements
root.bind('<Right>', right)
root.bind('<Left>', left)
root.bind('<Up>', up)
root.bind('<Down>', down)
root.mainloop()