Bonjour,
J'ai crée une fonction qui ouvre juste une fenêtre d'alerte avec un seul bouton pour sortir :
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 :
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 :
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 :
bouValidMsgBox = Button(fenMsgBox, bg="Slate Gray", command=fenMsgBox.destroy)
Là non :
bouValidMsgBox = Button(fenMsgBox, image=PHOTO4, bg="Slate Gray", command=fenMsgBox.destroy)
Je comprends pas d'ou viens le problème !
Partager