Tkinter : créer une liste
KRO
-
KRO -
KRO -
Bonjour,
je suis débutante et je me lance dans la programmation d'un jeu. Plusieurs images y sont en mouvement, seulement voilà ce que donne le programme :
je suis débutante et je me lance dans la programmation d'un jeu. Plusieurs images y sont en mouvement, seulement voilà ce que donne le programme :
from tkinter import* import os from PIL import Image, ImageTk def deplacement(): global dx, dy if canvas.coords(W_image)[1]>400: canvas.coords(W_image,180,0) if canvas.coords(W_image1)[1]>400: canvas.coords(W_image1,180,0) if canvas.coords(W_image2)[1]>400: canvas.coords(W_image2,180,0) if canvas.coords(W_image3)[1]>400: canvas.coords(W_image3,180,0) if canvas.coords(W_image4)[1]>400: canvas.coords(W_image4,180,0) if canvas.coords(W_image5)[1]>400: canvas.coords(W_image5,180,0) if canvas.coords(W_image6)[1]>400: canvas.coords(W_image6,300,0) if canvas.coords(W_image7)[1]>400: canvas.coords(W_image7,300,0) if canvas.coords(W_image8)[1]>400: canvas.coords(W_image8,300,0) if canvas.coords(W_image9)[1]>400: canvas.coords(W_image9,300,0) if canvas.coords(W_image10)[1]>400: canvas.coords(W_image10,300,0) if canvas.coords(W_image11)[1]>400: canvas.coords(W_image11,300,0) canvas.move(W_image,dx,dy) canvas.move(W_image1,dx,dy) canvas.move(W_image2,dx,dy) canvas.move(W_image3,dx,dy) canvas.move(W_image4,dx,dy) canvas.move(W_image5,dx,dy) canvas.move(W_image6,dx,dy) canvas.move(W_image7,dx,dy) canvas.move(W_image8,dx,dy) canvas.move(W_image9,dx,dy) canvas.move(W_image10,dx,dy) canvas.move(W_image11,dx,dy) root.after(60,deplacement) dx=0 dy=5 root = Tk() #Chemin pour les images script_dir = os.path.dirname(__file__) rel_path = "/images/" abs_file_path = script_dir + rel_path image = Image.open(abs_file_path+"baptiste.png") photobaptiste = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"clarys.png") photoclarys = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"anais.png") photoanais = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"allan.png") photoallan = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"arnold.png") photoarnold = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"thomas.png") photothomas = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"ayoub.png") photoayoub = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"caroline.png") photocaroline = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"deborah.png") photodeborah = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"louis.png") photolouis = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"paul.png") photopaul = ImageTk.PhotoImage(image) image = Image.open(abs_file_path+"nono.png") photonono = ImageTk.PhotoImage(image) canvas=Canvas(root, width=500, height=400, bg='white') canvas.pack(padx=10,pady=10) #On cree le Widget image dans le canvas: #NW=Nord West, le coin haut guche de l'image sera positionne a (10,10): W_image=canvas.create_image(180,0,anchor=NW,image=photoclarys) W_image1=canvas.create_image(180,50,anchor=NW,image=photobaptiste) W_image2=canvas.create_image(180,120,anchor=NW,image=photoanais) W_image3=canvas.create_image(180,190,anchor=NW,image=photoallan) W_image4=canvas.create_image(180,250,anchor=NW,image=photoarnold) W_image5=canvas.create_image(180,330,anchor=NW,image=photothomas) W_image6=canvas.create_image(300,0,anchor=NW,image=photoayoub) W_image7=canvas.create_image(300,50,anchor=NW,image=photocaroline) W_image8=canvas.create_image(300,120,anchor=NW,image=photodeborah) W_image9=canvas.create_image(300,190,anchor=NW,image=photolouis) W_image10=canvas.create_image(300,250,anchor=NW,image=photopaul) W_image11=canvas.create_image(300,330,anchor=NW,image=photonono) deplacement() root.mainloop()Je suis bien consciente que ce n'est ni facile à lire ni esthétique avec autant de lignes, c'est pour cela que j'aimerai tout regrouper grâce à une liste, mais je ne comprend pas trop comment faire. Si quelqu'un veut bien m'aider, merci d'avance.
A voir également:
- Tkinter : créer une liste
- Tkinter tableau - Forum Python
- Probleme tkinter injustifier - Forum Python
- Pygame ou tkinter ? - Forum Python
- Probleme collision avec tkinter - Forum Python
- Problème avec grid tkinter ✓ - Forum Python
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, probablement quelque chose du genre:
ainsi que:
for uneimage in liste_images : if canvas.coords(uneimage)[1]>400 : canvas.coords(uneimage,300,0) canvas.move(uneimage,dx,dy)
ainsi que:
for nom in ["baptiste", "clarys", ... , "nono"] : image = Image.open(abs_file_path + nom + ".png") photo = ImageTk.PhotoImage(image) liste_images.append(canvas.create_image(180,0,anchor=NW,image=photo))
tu dois aussi réfléchir où placer le code suggéré, quel code cela remplace.
je me demande si tu ne devrais pas commencer par utiliser des boucles et des listes avec des exercices plus simples.