Bonjour,
Ca va faire depuis un petit moment que je suis bloqué à cause d'un bug que je n'arrive pas à résoudre. Le but est d'afficher des images.
J'ai commencé par créer un prototype et ça me donne le code suivant qui marche très bien :
Je suis donc passé à l'étape suivante et j'ai voulu l'implémenter sur un code mais c'est là que ça coince. Aucune erreur ne se produit, mais l'image ne s'affiche plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36 #bibliothèques import tkinter as tk #création de la fenêtre principale fen=tk.Tk() #création du canvas selon les paramètres can=tk.Canvas(fen,height=600,width=300) #images image1=tk.PhotoImage(master=fen,file='données\\textures\\chemin_droite1.ppm') image2=tk.PhotoImage(master=fen,file='données\\textures\\chemin_hautgauche1.ppm') #gestion du dictionnaire dico={} dico[1]=image1 dico[2]=image2 #matrice matrice=[[1,2], [2,1]] #taille de la matrice nbLig=len(matrice) nbCol=len(matrice[0]) #affichage sous-image par sous-image for i in range(0,nbLig): for j in range(0,nbCol): can.create_image(i*48,j*48,image=dico[matrice[i][j]]) can.update() can.grid() fen.mainloop()
J'ai essayé de réduire le code au maximum pour simplifier et j'obtiens le programme suivant :
A vue de nez (probablement pas le meilleur nez qui soit cela dit), je dirais que le code est équivalent, du coup je comprend vraiment pas le problème dans la deuxième version...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 import tkinter as tk class FenetrePrincipale(tk.Tk): def __init__(self): super().__init__() def boucle(self): super().mainloop() def definition(self,titre): super().geometry("1400x700+67+40") self.update() self.caneva = CanvaFenetre(self, self.winfo_width(), self.winfo_height()) class CanvaFenetre(tk.Canvas): def __init__(self,fenetre,width,height,parent=None,posX=0,posY=0): super().__init__(fenetre,bg="white",width=width,height=height) super().place(x=posX,y=posY) ############################# PARTIE QUI FONCTIONNE ############################## #images image1=tk.PhotoImage(master=fenetre,file='données\\textures\\chemin_droite1.ppm') image2=tk.PhotoImage(master=fenetre,file='données\\textures\\chemin_hautgauche1.ppm') #gestion du dictionnaire dico={} dico[1]=image1 dico[2]=image2 #matrice matrice=[[1,2], [2,1]] #taille de la matrice nbLig=len(matrice) nbCol=len(matrice[0]) #affichage sous-image par sous-image for i in range(0,nbLig): for j in range(0,nbCol): self.create_image(i*48,j*48,image=dico[matrice[i][j]]) self.update() self.grid() ############################# PARTIE QUI FONCTIONNE ############################## class Application: def __init__(self): self.fenetrePrincipale = FenetrePrincipale() self.fenetrePrincipale.definition("work") self.fenetrePrincipale.boucle() Application()
Merci d'avance pour la personne qui pourras m'aider![]()
Partager