Problème d'affichage d'images
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 :
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 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() |
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.
J'ai essayé de réduire le code au maximum pour simplifier et j'obtiens le programme suivant :
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 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() |
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...
Merci d'avance pour la personne qui pourras m'aider ;)