Bonjour,

J'ai crée une fonction qui ouvre juste une fenêtre d'alerte avec un seul bouton pour sortir :
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
import os.path
from os import chdir        # Pour chargement des images dans autre répertoire chdir = chg de répertoire
from tkinter import *
#   Instancification
fenMsgBox =Tk()
 
def foncFenAlerte1Choix(titre, msg):
    """MsgBox d'alerte, un seul choix : fermeture"""
    #   Constantes
    NOMDOS = os.getcwd()                                    #   Nom du dossier courant
    chdir(NOMDOS + '\Images')                               #   Chg de répertoire courant pour charger les images
    PHOTO4 = PhotoImage(file='Icone30x30_Exit.png')
    chdir(NOMDOS)                                           #   Chg de répertoire courant pour revenir a la normale
    #   Création fenêtre
    fenMsgBox.title(titre)
    fenMsgBox.configure(bg="Slate Gray")
    fenMsgBox.geometry('300x360+670+400')
    #   Objets
    objMsgBox1 = Label(fenMsgBox, height=20, width=40, text=msg, bg="Gray")
 
 
    #  C'est là qu'est le soucis à cause de image=PHOTO4
    bouValidMsgBox = Button(fenMsgBox, image=PHOTO4, bg="Slate Gray", command=fenMsgBox.destroy)
 
 
 
 
    #   positionnements des objets
    objMsgBox1.pack(side=TOP)
    bouValidMsgBox.pack(side=BOTTOM)
    #   Centrage fenêtre
    from Fonctions.FoncCentreEcran import centreFenetre
    centreFenetre (fenMsgBox)
    #   Fenêtre fenMsgBox en 1er plan
    fenMsgBox.focus_set()
    #   Réception d'événements pour fenMsgBox
    fenMsgBox.mainloop()
Si je l'appelle comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
msg="Mon msg :\n\nVoulez-vous vraiment supprimer cette donnée ?"
titre="monTitre"
 
from Fonctions.FoncMesAlerte1button import foncFenAlerte1Choix
foncFenAlerte1Choix(titre, msg)
pas de soucis, par contre si je l'appelle de la même façon à partir d'un programme, je met juste un morceau de code car trop de lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
if varNom=="" or varLog=="" or varCode=="":
        titre = "ALERTE !"
        msg = "Vous n'avez rien indiqué\ndans la case NOM, LOGGING\nou dans la case CODE !"
        from Fonctions.FoncMesAlerte1button import foncFenAlerte1Choix
        foncFenAlerte1Choix (titre, msg)
        return
Là j'ai ce msg d'erreur:
_tkinter.TclError: image "pyimage21" doesn't exist

J'ai trouvé quelques explications sur le net, cela viendrais de PhotoImage et en effet si je retire juste l'appel à l'image :
Là c'est OK :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouValidMsgBox = Button(fenMsgBox, bg="Slate Gray", command=fenMsgBox.destroy)
Là non :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouValidMsgBox = Button(fenMsgBox, image=PHOTO4, bg="Slate Gray", command=fenMsgBox.destroy)
Je comprends pas d'ou viens le problème !