Python3.7 n'affiche pas une image .gif dans un canevas
Fermémamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 - 12 sept. 2023 à 15:45
- Python3.7 n'affiche pas une image .gif dans un canevas
- Canevas gratuit - Télécharger - Divers Photo & Graphisme
- Image iso - Guide
- Comment agrandir une image - Guide
- Acronis true image - Télécharger - Sauvegarde
- Le clavier de mon telephone ne s'affiche plus - Guide
6 réponses
6 sept. 2023 à 06:13
Bonjour,
Il faudrait tout de même pour que quelqu'un puisse te donner un avis que tu mettes le source concerné.
PS : utilise l'icone code <> pour la coloration syntaxique.
Modifié le 6 sept. 2023 à 10:10
Bonjour,
Normalement si tu as écris ça, après la définition du Canvas:
im = PhotoImage(file='test.gif')
et ensuite
mon_canevas.create_image(x,y, anchor = NW, image=im)
ça doit marcher ...
Modifié le 12 sept. 2023 à 15:38
Bonjour.
Suite à mon message d'hier, voici plus d'informations.
Le code.
(Je n'arrive pas à faire apparaître les n° de ligne, ensuite, l'icone code <>, pas trouvée !)
##----- Importation des Modules -----## from tkinter import * ##----- Création de la fenêtre -----## fen = Tk() fen.title('Tracer dans un canevas') ##----- Création des boutons -----## bouton_quitter = Button(fen, text='Quitter', command=fen.destroy) bouton_quitter.grid(row = 1, column = 1, padx = 3, pady = 3, sticky=E) ##----- Création du canevas -----## dessin = Canvas(fen, width = 500, height = 400, bg = 'white') dessin.grid(row = 0, column = 0, columnspan = 2, padx = 3, pady = 3) ##----- Dessiner dans le canevas -----## ligne1 = dessin.create_line(250, 175, 250, 225, width=4, fill='#d05e82') rect1 = dessin.create_rectangle(175, 250, 325, 327, width=2, outline='#d05e82') ovale1 = dessin.create_oval(75, 25, 425, 375, width=2, outline='#fb8007') ovale2 = dessin.create_oval(180, 140, 230, 190, width=0, fill='#d05e82') ovale3 = dessin.create_oval(270, 140, 320, 190, width=0, fill='#d05e82') dessin.create_text(254, 90, text=' Bienvenue\nà la formation', fill='#fb8007', font='Arial 20') im = PhotoImage(file = 'Logo_ISN-IREM.gif', master=fen) logo1 = dessin.create_image(250, 288, image = im ) ##----- Programme principal -----## fen.mainloop() # Boucle d'attente des événements
Pour appliquer l'exemple proposé, il faut télécharger le fichier Logo_ISN-IREM.gif, puis enregistrer ce fichier dans le répertoire courant.
Voici une copie du message d'erreur.
>>> %Run 'Formation ISN.py'
Traceback (most recent call last):
File "/home/pi/Desktop/Stirling/Formation ISN.py", line 23, in <module>
im = PhotoImage(file = 'Logo_ISN-IREM.gif', master=fen)
File "/usr/lib/python3.7/tkinter/__init__.py", line 3545, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/usr/lib/python3.7/tkinter/__init__.py", line 3501, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "Logo_ISN-IREM.gif"
Le "Logo_ISN-IREM.gif" doit s'afficher dans un rectangle prévu à cet effet sur le canevas.
Il faut aussi préciser que je travaille sur un Raspberry PI400.
Je viens d'utiliser ma tablette sur laquelle j'ai installé Pydroid 3, un Python pour Android, et tout fonctionne parfaitement !! Serait-ce un problème de matériel ?
J'espère que vous pourrez résoudre ce mystère.
Merci beaucoup, mes sincères salutations.
Modifié le 6 sept. 2023 à 18:55
Bonjour
_tkinter.TclError: couldn't recognize data in image file "Logo_ISN-IREM.gif"
signifie : impossible de reconnaitre les données dans le fichier "Logo_ISN-IREM.gif"
Apparemment, le gif n'est pas reconnu ?
En tout cas, chez moi, sur mon PC Windows, il l'est
Pour insérer du code, c'est ici:
##----- Importation des Modules -----## from tkinter import * ##----- Création de la fenêtre -----## fen = Tk() fen.title('Tracer dans un canevas') ##----- Création des boutons -----## bouton_quitter = Button(fen, text='Quitter', command=fen.destroy) bouton_quitter.grid(row = 1, column = 1, padx = 3, pady = 3, sticky=E) ##----- Création du canevas -----## dessin = Canvas(fen, width = 500, height = 400, bg = 'white') dessin.grid(row = 0, column = 0, columnspan = 2, padx = 3, pady = 3) ##----- Dessiner dans le canevas -----## ligne1 = dessin.create_line(250, 175, 250, 225, width=4, fill='#d05e82') rect1 = dessin.create_rectangle(175, 250, 325, 327, width=2, outline='#d05e82') ovale1 = dessin.create_oval(75, 25, 425, 375, width=2, outline='#fb8007') ovale2 = dessin.create_oval(180, 140, 230, 190, width=0, fill='#d05e82') ovale3 = dessin.create_oval(270, 140, 320, 190, width=0, fill='#d05e82') dessin.create_text(254, 90, text=' Bienvenue\nà la formation', fill='#fb8007', font='Arial 20') im = PhotoImage(file = 'Logo_ISN-IREM.gif', master=fen) logo1 = dessin.create_image(250, 288, image = im ) ##----- Programme principal -----## fen.mainloop() # Boucle d'attente des événements
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié le 12 sept. 2023 à 15:40
Bonjour.
Suite à mon message du 5 septembre 2023, voici plus d'informations.
Le code
##----- Importation des Modules -----## from tkinter import * ##----- Création de la fenêtre -----## fen = Tk() fen.title('Tracer dans un canevas') ##----- Création des boutons -----## bouton_quitter = Button(fen, text='Quitter', command=fen.destroy) bouton_quitter.grid(row = 1, column = 1, padx = 3, pady = 3, sticky=E) ##----- Création du canevas -----## dessin = Canvas(fen, width = 500, height = 400, bg = 'white') dessin.grid(row = 0, column = 0, columnspan = 2, padx = 3, pady = 3) ##----- Dessiner dans le canevas -----## ligne1 = dessin.create_line(250, 175, 250, 225, width=4, fill='#d05e82') rect1 = dessin.create_rectangle(175, 250, 325, 327, width=2, outline='#d05e82') ovale1 = dessin.create_oval(75, 25, 425, 375, width=2, outline='#fb8007') ovale2 = dessin.create_oval(180, 140, 230, 190, width=0, fill='#d05e82') ovale3 = dessin.create_oval(270, 140, 320, 190, width=0, fill='#d05e82') dessin.create_text(254, 90, text=' Bienvenue\nà la formation', fill='#fb8007', font='Arial 20') im = PhotoImage(file = 'Logo_ISN-IREM.gif', master=fen) logo1 = dessin.create_image(250, 288, image = im ) ##----- Programme principal -----## fen.mainloop() # Boucle d'attente des événements
Pour appliquer l'exemple proposé, il faut télécharger le fichier Logo_ISN-IREM.gif, puis enregistrer ce fichier dans le répertoire courant.
Voici une copie du message d'erreur
Python 3.7.3 (/usr/bin/python3)
>>> %Run 'Formation ISN.py'
Traceback (most recent call last):
File "/home/pi/Desktop/Stirling/Formation ISN.py", line 23, in <module>
im = PhotoImage(file = 'Logo_ISN-IREM.gif', master=fen)
File "/usr/lib/python3.7/tkinter/__init__.py", line 3545, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/usr/lib/python3.7/tkinter/__init__.py", line 3501, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "Logo_ISN-IREM.gif"
>>>
Le "Logo_ISN-IREM.gif" doit s'afficher dans un rectangle prévu à cet effet sur le canavas. Ici le fichier .gif n’est pas reconnu, c’est très curieux !
Autres précisions
Je travaille sur un Raspberry PI400.
Je viens d'utiliser ma tablette sur laquelle j'ai installé Pydroid 3, un Python pour Android, et tout fonctionne parfaitement !!
Serait-ce un problème de matériel ? Je le crains.
J'espère que vous pourrez résoudre ce mystère.
Merci beaucoup, mes sincères salutations.
12 sept. 2023 à 15:45
Bonjour,
Vu que ta version de python est vieille, il en va sans doute de même pour ta version de tkinter et de ses dépendances, ce qui pourrait expliquer ton problème. Cette discussion suggère deux manières de contourner le problème :
- Soit convertir le fichier dans un autre format (e.g., png), quitte à passer par PIL ou Pillow (un fork de PIL) pour faire la conversion à l'intérieur du programme
- Soit mettre à jour python et tes modules python pour que ça marche correctement.
En tout cas, ce n'est pas un problème matériel.
Bonne chance