Erreur dans code Tkinter
FerméPhil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 30 juin 2023 à 11:50
- _tkinter.tclerror: image "pyimage4" doesn't exist
- Erreur 0x80070643 - Accueil - Windows
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
7 réponses
Modifié le 29 juin 2023 à 15:40
J'ai vu sur le net que certains avaient corrigé le problème en précisant le master dans PhotoImage()
À tester :
logo = ImageTk.PhotoImage(im, master=virvolt)
28 juin 2023 à 16:29
bonjour,
bizarre, d'où vient ce nom, pyimage9?
28 juin 2023 à 16:44
C'est une référence interne à Tcl
28 juin 2023 à 16:39
Salut,
Déjà, je doublerai les anti-slash :
ImageTk.PhotoImage(file="C:\\HDD\\DATA\\ESME\\INGE2\\Stage\\Virvolt\\logopourvirvolt.png")
L'une des raisons pourrait être que plusieurs instances de Tk() sont toujours en mémoire surement parce qu'elles ont probablement planté avant le mainloop().
Si c'est bien le cas, il suffit d'exécuter le code ci-dessous et de fermer toutes les fenêtres Tkinter qui apparaissent :
import tkinter as tk root = tk.Tk() root.mainloop()
Modifié le 28 juin 2023 à 17:01
Bonjour,
Ca doit marcher, normalement (ici avec une image de mon cru) :
import tkinter as tk from tkinter.filedialog import * from PIL import Image, ImageTk main_win = tk.Tk() main_win.geometry("350x300") accueil = tk.Canvas(main_win, width=240, height=150) accueil.pack() im = Image.open("stone.jpg") logo = ImageTk.PhotoImage(im) accueil.create_image(10, 10, anchor = NW, image=logo) tk.Button(main_win, text='programme soft').pack() tk.Button(main_win, text='programme medium').pack() tk.Button(main_win, text='programme sport').pack() main_win.mainloop()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionJai d'ailleurs changé de manière d'importation, je vous fournis mon code mis à jour pour plus de précisions la partie posant problème est laissée en commentaire à la fin :
# -*- coding: utf-8 -*- """ Created on Wed Jun 28 14:56:00 2023 @author: """ from tkinter import * from tkinter.ttk import * from tkinter.filedialog import * from PIL import Image, ImageTk virvolt = Tk() virvolt.geometry('360x600') virvolt.minsize(width=360, height=600) virvolt.configure(bg='#012AFF') #boutons b1= Button(virvolt, text='Assistance faible',) b2= Button(virvolt, text='Assistance medium') b3= Button(virvolt, text='Assistance haute') # Fonction pour ajuster la position des boutons en fonction de la taille de la fenêtre def position_boutons(event=None): window_width = virvolt.winfo_width() window_height = virvolt.winfo_height() b3_width = b3.winfo_width() b2_width = b2.winfo_width() b3_x = window_width - b3_width b2_x = (window_width - b2_width)//2 # Calcul des nouvelles coordonnées des boutons en fonction de la taille de la fenêtre b1_x = int(window_width * 0) b1_y = int(window_height * 0.95) b2_y = int(window_height * 0.95) b3_y = int(window_height * 0.95) # Définition des nouvelles coordonnées des boutons b1.place(x=b1_x, y=b1_y) b2.place(x=b2_x, y=b2_y) b3.place(x=b3_x, y=b3_y) # Événement de redimensionnement de la fenêtre pour ajuster la position des boutons virvolt.bind('<Configure>', position_boutons) # Premier ajustement de la position des boutons lors du démarrage virvolt.update() position_boutons() style = Style() style.configure('TButton', font = ('calibri', 11, 'bold'), borderwidth = '4') # Changes will be reflected # by the movement of mouse. style.map('TButton', foreground = [('active', '!disabled', '#4ABD00')], background = [('active', 'black')]) """ #logo logo = PhotoImage(file="virvoltlogo.png") acceuil=Canvas(virvolt, width=175, height=45) acceuil.create_image(0,0,anchor=NW, image=logo) acceuil.pack()""" virvolt.mainloop()
29 juin 2023 à 13:19
Bonjour,
OK, mais pourrais-tu simplement copier/coller les 19 lignes mon code tel qu'il est
sans rien y changer, sauf le nom de l'image, car je vois qu'il te manque la ligne
Image.open():
im = Image.open("virvoltlogo.png") logo = ImageTk.PhotoImage(im) accueil.create_image(10, 10, anchor = NW, image=logo)
Tu fais exactement ça et tu me dis ce que ça donne
Modifié le 29 juin 2023 à 13:30
ton code dans un ordre plus logique et regarde bien les lignes 42,43,44
# -*- coding: utf-8 -*- """ Created on Wed Jun 28 14:56:00 2023 @author: """ from tkinter import * from tkinter.ttk import * from tkinter.filedialog import * from PIL import Image, ImageTk def position_boutons(event=None): ''' ajuste la position des boutons en fonction de la taille de la fenêtre ''' window_width = virvolt.winfo_width() window_height = virvolt.winfo_height() b3_width = b3.winfo_width() b2_width = b2.winfo_width() b3_x = window_width - b3_width b2_x = (window_width - b2_width)//2 # Calcul des nouvelles coordonnées des boutons en fonction de la taille de la fenêtre b1_x = int(window_width * 0) b1_y = int(window_height * 0.95) b2_y = int(window_height * 0.95) b3_y = int(window_height * 0.95) # Définition des nouvelles coordonnées des boutons b1.place(x=b1_x, y=b1_y) b2.place(x=b2_x, y=b2_y) b3.place(x=b3_x, y=b3_y) virvolt = Tk() virvolt.geometry('360x600') virvolt.minsize(width=360, height=400) virvolt.configure(bg='#012AFF') accueil=Canvas(virvolt, width=175, height=45) accueil.pack() im = Image.open("virvoltlogo.png") logo = ImageTk.PhotoImage(im) accueil.create_image(0,0,anchor=NW, image=logo) b1= Button(virvolt, text='Assistance faible',) b2= Button(virvolt, text='Assistance medium') b3= Button(virvolt, text='Assistance haute') virvolt.bind('<Configure>', position_boutons) virvolt.update() position_boutons() style = Style() style.configure('TButton', font = ('calibri', 11, 'bold'), borderwidth = '4') style.map('TButton', foreground = [('active', '!disabled', '#4ABD00')], background = [('active', 'black')]) virvolt.mainloop()
29 juin 2023 à 15:08
Ca marche niquel avec le code que tu m'as refourni, en esperant que l'erreur ne resurgissent pas de nulle part comme elle l'avait fait au départ.
Un grand merci à tous pour votre aide précieuse Phil et Diablo !!! <3
29 juin 2023 à 15:21
Fausse joie, après quelques ouverture de check, l'erreur Tcl réapparait...
29 juin 2023 à 16:51
Ce qui pourrait-être intéressant quand l'erreur apparait, c'est de lancer le gestionnaire des tâches et dans l'onglet Processus voir combien d'instances de tk apparaissent.
30 juin 2023 à 11:50
Bonjour,
Par contre, si tu pouvais écrire accueil et non pas acceuil .... :-)