Problème d'images
RésoluPr.Witherfire -
Bonjoutr. J'ai un problème d'image gif avec tkinter. J'ai fait la meme chose que d'haibitude mais la ça ne marche pas...
# IMPORTS from tkinter import * import pickle import time from datetime import datetime # INFOS PCHIPath = "D:\Gwenneg" PCHIFolder = "PCHI" PCHIVersion = "Consolaire" PCHIColor1 = "black" PCHIColor2 = "white" PCHIPolice = "Arial" # FICHIERS # Loads PCHILoadGeneral = "D:\Gwenneg\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Sauvegarde\PCHIS.Sauve" # VARIABLES # Fenetres PCHIFMenu = Tk() PCHIFMenu.title("PCHI " + PCHIVersion + " Menu") PCHIFMenu.iconbitmap() PCHIFMenu.geometry("1600x900+-8+0") PCHIFMenu.config(bg=PCHIColor1) # FONCTIONS # Importation with open(PCHILoadGeneral, "rb") as f1: PCHISrest = pickle.load(f1) PCHINbDeProjetP1 = PCHISrest.get("PCHINbDeProjetP1") PCHIExp = PCHISrest.get("PCHIExp") def PCHIFoIntro(): PCHIFIntro = Tk() PCHIFIntro.geometry("500x250+550+300") PCHIFIntro.overrideredirect(1) PCHII = PhotoImage(file= "D:\Gwenneg\Programmation\Python\\3-Repertoires\\1-PCHI\\1-PCHI Consolaire\PCHI\Ressources\Images\Intro.gif") PCHILiIntro = Label(PCHIFIntro, image=PCHII) PCHILiIntro.pack() PCHIFIntro.update() time.sleep(3) PCHIFIntro.destroy() time.sleep(1) def PCHIFoMenu(): PCHICMenu = Canvas(PCHIFMenu, width=1600, height=270, bg=PCHIColor2) PCHICMenu.place(x=0, y=0) PCHILtMenu = Label(PCHICMenu, text="Pseudo Compilateur Hybride Infynyty", font=(PCHIPolice, 40), fg=PCHIColor1, bg=PCHIColor2) PCHILtMenu.place(x=375, y=100) PCHIFMenu.mainloop() # SCENARIO PCHIFoIntro() PCHIFoMenu()
c'est au niveau de l'intro le problème
"C:\Program Files\Python311\python.exe" C:\Users\Gwenneg\PycharmProjects\PCHI\main.py Traceback (most recent call last): File "C:\Users\Gwenneg\PycharmProjects\PCHI\main.py", line 237, in <module> PCHIFoIntro() File "C:\Users\Gwenneg\PycharmProjects\PCHI\main.py", line 105, in PCHIFoIntro PCHILiIntro = Label(PCHIFIntro, image=PCHII) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python311\Lib\tkinter\__init__.py", line 3204, in __init__ Widget.__init__(self, master, 'label', cnf, kw) File "C:\Program Files\Python311\Lib\tkinter\__init__.py", line 2628, in __init__ self.tk.call( _tkinter.TclError: image "pyimage1" doesn't exist Process finished with exit code 1
Merci si vous m'aidez...
- Problème d'images
- Des images - Guide
- Extraire images pdf - Guide
- Images enregistrées - Forum Bureautique
- Recherche images - Guide
- 4 images 1 mot niveau 10 chaperon rouge ✓ - Forum Jeux vidéo
8 réponses
Salut, histoire de référence, ton image est créée dans une fonction, ce qui fait que la référence à ton image n'est gardée nulle part, puisque détruite par python (Garbage Collector) après l'appel à cette fonction, voilà pourquoi tkinter te dit qu'il ne la trouve pas.
De ce fait il est préférable de déclarer tes images hors fonctions et d'ailleurs d'en faire des constantes.
Une constante est simplement en python une variable dont le nom est en majuscules.
Ton code ne respecte pas les conventions en python.
https://peps.python.org/pep-0008/#function-and-variable-names
https://peps.python.org/pep-0008/#constants
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionCa sert à quoi de créer 2 fenêtres principales (ligne 49 et ligne 80) ?
Tu crée une fenêtre ligne 80, et tu la détruit aussitôt ligne 89 ?
Quelle usine à gaz ! on se demande où tu veux en venir ...
On ne fait qu'un fenêtre Tk, si besoin d'autres fenêtres, alors il faut utiliser des Toplevel, l'erreur vient de ça, ton image est affiliée à l'autre fenêtre (la première déclarée). Tu epux tout de même spécifier le master (paramètre) lors de la création de ton image, mais il est préférable de revoir ton code en utilisant des toplevel.
Si ton analyse est correcte, il suffit alors, je pense, de mémoriser cette référence en l'attachant à un objet persistant. Pour compenser ce que tkinter néglige de faire.
Je ne m'y retrouve pas dans les messages d'erreur avec le code incomplet partagé, donc, à tout hasard: