Bonjour à tous,

Comme souligné dans l'intitulé de la conversation, je suis actuellement à la recherche d'une âme bienveillante pour m'aider sur un problème que je rencontre avec tkinter.

Je souhaite actuellement créer une interface graphique qui servira plus tard à faciliter l'exécution de plusieurs actions. Je bloque actuellement sur quelque chose qui me semble pourtant trivial : l'ajout d'une photo en .ppm...

Après exécution du script, l'erreur suivante apparait : raise RuntimeError('Too early to create image')
RuntimeError: Too early to create image.

Après quelques recherches, il semblerait que cette dernière apparaisse lorsque le canva n'a pas encore été créé, chose qui, si je ne me trompe pas n'est pas mon cas.

Je vous joins le code ci dessous

Un très grand merci par avance pour toute l'aide que vous pourrez m'apporter !

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
from tkinter import *
from tkinter.messagebox import * # boîte de dialogue
 
# Petite partie sur les couleurs
 
color1 = '#C1ECFF'
 
 
def Verification():
    if Motdepasse.get() == 'XXXXXXXXXXX':
        # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
        showinfo('Résultat','Mot de passe correct.')
        Mafenetre.destroy()
 
        # Création de la nouvelle fenêtre
        New_fenetre = Tk()
        New_fenetre.title("Assistant XXXX")
 
        w=600
        h=400
        ws = New_fenetre.winfo_screenwidth()
        hs = New_fenetre.winfo_screenheight()
        x = (ws/2) - (w/2)
        y = (hs/2) - (h/2)
        New_fenetre.geometry('%dx%d+%d+%d' % (w, h, x, y))
 
        New_fenetre.tk_setPalette(background='#C1ECFF', foreground='black',
               activeBackground='black', activeForeground=color1)
 
        # Création d'un widget label (texte 'Bienvenue sur l'assistant XXX')
        label = Label(New_fenetre, text = "Bienvenue sur l'assistant XXX")
        label.pack(side = LEFT, padx = 5, pady = 5)
 
        New_fenetre.mainloop()
 
        # Ajout du logo de XXXX
 
        mon_image = PhotoImage(file = "logo XXXX.ppm")
        largeur = mon_image.width()  # dimensions en nombre de pixels
        hauteur = mon_image.height()
 
        zone_image = Canvas(New_fenetre, width = largeur, height = hauteur) # crée un canevas de dimensions ajustées à celles de l'image
        zone_image.create_image(0,0, anchor = NW, image = mon_image) # association image/widget
        zone_image.pack(side = LEFT, padx = 5, pady = 5) # placement du widget
 
    else:
        # le mot de passe est incorrect : on affiche une boîte de dialogue
        showwarning('Résultat','Mot de passe incorrect.\nVeuillez recommencer !')
        Motdepasse.set('')
 
# Création de la fenêtre principale (main window)
Mafenetre = Tk()
Mafenetre.title('Identification requise')
 
# Création d'un widget Label (texte 'Mot de passe')
Label1 = Label(Mafenetre, text = 'Mot de passe ')
Label1.pack(side = LEFT, padx = 5, pady = 5)
 
# Création d'un widget Entry (champ de saisie)
Motdepasse= StringVar()
Champ = Entry(Mafenetre, textvariable= Motdepasse, show='*', bg ='bisque', fg='maroon')
Champ.focus_set()
Champ.pack(side = LEFT, padx = 5, pady = 5)
 
# Création d'un widget Button (bouton Valider)
Bouton = Button(Mafenetre, text ='Valider', command = Verification)
Bouton.pack(side = LEFT, padx = 5, pady = 5)
 
Mafenetre.mainloop()
PS: Je précise au cas où que la photo en question est situé dans le même dossier que l'enregistrement du fichier python