CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Inserer une image dans une interface graphique

mathildeeeG
mathildeeeG
Niveau 1
27 avril 2017 à 11:19:13

Bonjour à tous ! Je fais ISN cette année en terminale et je voudrais introduire une image d'un drapeau anglais que j'ai enregistré comme fichier sous le nom de"drapeau.jpg" dans l'interface graphique d'une fenêtre.
Pour l'instant, j'ai écrit ça:

photo = PhotoImage(file="drapeau.jpg")
canvas = Canvas(fen1,width=350, height=200)
canvas.create_image(0, 0, anchor=NW, image=photo)
canvas.pack()

Mais quand je veux executer le programme, ça me met "Tcl Error:couldn't open 'drapeau.jpg', no such file or directory"
Quelqu'un pourrait il m'aider ? :)

Ebara
Ebara
Niveau 16
27 avril 2017 à 11:35:14

Pense à préciser le langage, sur le coup si on connaît pas la classe Canvas dur de deviner que c'est du python. Ton fichier est dans le même dossier que ton code?

Ebara
Ebara
Niveau 16
27 avril 2017 à 11:38:46

Le 27 avril 2017 à 11:35:14 Ebara a écrit :
Pense à préciser le langage, sur le coup si on connaît pas la classe Canvas dur de deviner que c'est du python. Ton fichier est dans le même dossier que ton code?

Si oui, vérifie les droits en lecture sur le fichier + utilise le path absolu pour voir. Tu peux générer un chemin universel en chopant le path du dossier courant, ça donnerait:



import os 
path = os.path.dirname(os.path.realpath(__file__)) + '/path/to/drapeau.jpg'

Dé mémoire hein, je suis pas expert python. :p)

mathildeeeG
mathildeeeG
Niveau 1
28 avril 2017 à 08:46:33

Merci pour ta réponse !
Alors oui le fichier est bien enregistré dans le même dossier que Python, mais l'erreur est toujours présente.
J'ai essayé ta technique avec le path mais ça ne fonctionne toujours pas :/
faut -il que je change des trucs dans le morceau de code que tu m'as donné ou je le mets tel quel ?

arsh222
arsh222
Niveau 10
28 avril 2017 à 09:36:30

essaie os.getcwd() pour voir quel est le répertoire courant :(

Ebara
Ebara
Niveau 16
28 avril 2017 à 11:20:12

Le 28 avril 2017 à 09:36:30 arsh222 a écrit :
essaie os.getcwd() pour voir quel est le répertoire courant :(

Ca retourne uniquement le répertoire courant lors de l'exécution du programme non?
Si j'exécute ça via un CRON je suis niqué par exemple

Message édité le 28 avril 2017 à 11:20:34 par Ebara
arsh222
arsh222
Niveau 10
28 avril 2017 à 13:01:34

Le 28 avril 2017 à 11:20:12 Ebara a écrit :

Le 28 avril 2017 à 09:36:30 arsh222 a écrit :
essaie os.getcwd() pour voir quel est le répertoire courant :(

Ca retourne uniquement le répertoire courant lors de l'exécution du programme non?
Si j'exécute ça via un CRON je suis niqué par exemple

C'est sans doute pour ça que son truc ne marche pas

Le 28 avril 2017 à 08:46:33 mathildeeeG a écrit :
faut -il que je change des trucs dans le morceau de code que tu m'as donné ou je le mets tel quel ?

le code de Ebara te donne le dossier où est ton script python, si l'image est dans le même dossier tu n'as qu'à ajouter le nom du fichier à la suite : os.path.dirname(os.path.realpath(__file__)) + '/drapeau.jpg'

après quand tu dis

le fichier est bien enregistré dans le même dossier que Python

tu parles bien du dossier où est ton fichier script, pas du dossier d'installation de Python ?

Ebara
Ebara
Niveau 16
28 avril 2017 à 13:04:31

Le 28 avril 2017 à 13:01:34 arsh222 a écrit :

Le 28 avril 2017 à 11:20:12 Ebara a écrit :

Le 28 avril 2017 à 09:36:30 arsh222 a écrit :
essaie os.getcwd() pour voir quel est le répertoire courant :(

Ca retourne uniquement le répertoire courant lors de l'exécution du programme non?
Si j'exécute ça via un CRON je suis niqué par exemple

C'est sans doute pour ça que son truc ne marche pas

Le 28 avril 2017 à 08:46:33 mathildeeeG a écrit :
faut -il que je change des trucs dans le morceau de code que tu m'as donné ou je le mets tel quel ?

le code de Ebara te donne le dossier où est ton script python, si l'image est dans le même dossier tu n'as qu'à ajouter le nom du fichier à la suite : os.path.dirname(os.path.realpath(__file__)) + '/drapeau.jpg'

après quand tu dis

le fichier est bien enregistré dans le même dossier que Python

tu parles bien du dossier où est ton fichier script, pas du dossier d'installation de Python ?

De toute façon, ne soyons pas cons: qu'il/elle essaye simplement de print le path que ça lui donne et de comparer ça au path du fichier, on saura tout de suite où est-ce que ça déconne :)

mathildeeeG
mathildeeeG
Niveau 1
28 avril 2017 à 14:33:05

Merci pour votre aide, j'ai utilisé le path et ça a fonctionné ! :)

Message édité le 28 avril 2017 à 14:33:21 par mathildeeeG
Ebara
Ebara
Niveau 16
28 avril 2017 à 14:37:50

Le 28 avril 2017 à 14:33:05 mathildeeeG a écrit :
Merci pour votre aide, j'ai utilisé le path et ça a fonctionné ! :)

De rien :) Par contre n'écrit jamais un path en toute lettre, utilise uniquement les constantes et les méthodes concernés. Garde à l'esprit que le code doit être portable.

Si ton script est dans, "/srv/scripts/x.py" par exemple, quelqu'un d'autre (ou même toi si tu changes de machine, ou versionne, etc..) le fout dans "/Users/scripts/x.py", si dans ton code il est écrit


    photo = PhotoImage(file="/srv/scripts/drapeau.jpg")

ça va poser problème. :ok:

Message édité le 28 avril 2017 à 14:41:35 par Ebara
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment