IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

iconbitmap .ico et .xpm ne fonctionne pas ?


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut iconbitmap .ico et .xpm ne fonctionne pas ?
    Bonjour, ce matin je prends un cours de tkinter:



    Je place mon .ico dans le dossier de mon script:

    je lance le programme de Graven:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
    fenetre=Tk()
    fenetre.title( "ma fenêtre")
    fenetre.geometry("1000x760")# attention x est différent de *
    fenetre.iconbitmap('logo.ico')
    fenetre.mainloop()
    J'obtiens ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "tkinter graven.py", line 9, in <module>
        fenetre.iconbitmap('logo.ico')
      File "/usr/lib/python3.5/tkinter/__init__.py", line 1728, in wm_iconbitmap
        return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
    _tkinter.TclError: bitmap "logo.ico" not defined
    Je fouille sur le net avec mon message d'erreur sous le bras. Je comprends que je suis sous linux et qu'il faut un fichier.xpm dans le même répertoire de script , à la place de .ico

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "tkinter graven.py", line 9, in <module>
        fenetre.iconbitmap('Capture.xpm')
      File "/usr/lib/python3.5/tkinter/__init__.py", line 1728, in wm_iconbitmap
        return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
    _tkinter.TclError: bitmap "Capture.xpm" not defined
    Où est ce que je déconne ?

    Merci d'avance !

    Nico

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Salut,

    Citation Envoyé par calixtus06 Voir le message
    Où est ce que je déconne ?
    Héritage de X11, le nom de fichier sur Linux doit être préfixé par un '@'.

    - W

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Salut !

    Le nom du fichier dans le script et le fichier lui même ? Parce que là rien ne fonctionne ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    import os
    os.chdir("/home/nicolas/Bureau/OPENCLASSROOM")
     
     
    fenetre=Tk()
    fenetre.title( "ma fenêtre")
    fenetre.geometry("1000x760")   # attention x est différent de *
    fenetre.iconbitmap('@Capture.xpm')
    fenetre.mainloop()
     
    os.system()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "tkinter graven.py", line 12, in <module>
        fenetre.iconbitmap('@Capture.xpm')
      File "/usr/lib/python3.5/tkinter/__init__.py", line 1728, in wm_iconbitmap
        return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
    _tkinter.TclError: error reading bitmap file "Capture.xpm"

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    j'ai essayé d'adapter ça :

    https://stackoverflow.com/questions/...ng-bitmap-file

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
    monImage=PhotoImage("/home/nicolas/Bureau/OPENCLASSROOM/Capture.xpm")
     
    fenetre=Tk()
    fenetre.title( "ma fenêtre")
    fenetre.geometry("1000x760") # attention x est différent de *
    fenetre.call('wm', 'Capture.xpm', fenetre._w, monImage)
    fenetre.mainloop()
    Avec ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "tkinter graven.py", line 5, in <module>
        monImage=PhotoImage("/home/nicolas/Bureau/OPENCLASSROOM/Capture.xpm")
      File "/usr/lib/python3.5/tkinter/__init__.py", line 3406, in __init__
        Image.__init__(self, 'photo', name, cnf, master, **kw)
      File "/usr/lib/python3.5/tkinter/__init__.py", line 3347, in __init__
        raise RuntimeError('Too early to create image')
    RuntimeError: Too early to create image

  5. #5
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Utilise un gif, puis une image tkinter passée à iconphoto, au moins ce sera compatible multi-systèmes sans se compliquer la vie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import tkinter as tk
     
    fenetre = tk.Tk()
    icone = tk.PhotoImage(file='chemin/vers/image.gif')
    fenetre.iconphoto(True, icone)
    fenetre.mainloop()

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Citation Envoyé par calixtus06 Voir le message
    Le nom du fichier dans le script et le fichier lui même ? Parce que là rien ne fonctionne ...
    fenetre.iconbitmap('@Capture.xpm') devrait fonctionner et l'erreur dit seulement que le format n'est pas bon... Vous avez fabriqué cela comment?

    Citation Envoyé par calixtus06 Voir le message
    Ici le message d'erreur RuntimeError: Too early to create image dit juste que vous devez créer Tk() avant de pouvoir créer une Photoimage...

    Effectivement passer par iconphoto sera plus simple.

    - W

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Vous avez fabriqué cela comment?
    En ligne et non par un outil comme gimp sur l'ordi

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
    fenetre=Tk()
    fenetre.title( "ma fenêtre")
    fenetre.geometry("1000x760") # attention x est différent de *
     
    icone = PhotoImage(file='/home/nicolas/Bureau/OPENCLASSROOM/logo.gif')
    fenetre.iconphoto(True, icone)
     
     
    fenetre.mainloop()
    fenetre s'ouvre mais rien dedans ( ??) et pas de message d'erreur

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 313
    Points : 36 819
    Points
    36 819
    Par défaut
    Citation Envoyé par calixtus06 Voir le message
    fenetre s'ouvre mais rien dedans ( ??) et pas de message d'erreur
    Ce n'est supposé changer que l'icône en haut à gauche des fenêtres.

    - W

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Effectivement la manip consiste à modifier le petit icône en haut à gauche.


    Mon gif serait trop volumineux ??? Je l'ai mis à 200x200 pixels, 22 ko.
    Je l'ai mis à 50x50: idem

  11. #11
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Je ne pense pas que cela ait quelque chose à voir avec la dimension ou poids du gif (du moins sur linux), j'ai testé avec des dimensions complètement hors standard avec une image de 450 × 112 et l'icône est quand même bien affiché.

    A tout hasard, est-ce que le thème graphique que tu utilises ne serait pas la cause ? Je dis ça car j'ai déjà eu le tour, je cherchais pourquoi l'icône de ma fenêtre ne s'affichait désespéramment pas, et c'était dû au choix graphique de bordures de fenêtres qui ne gérait pas bien les icônes de fenêtres.

    Bah sinon, faudrait poster un exemple d'image gif en pièce jointe qui ne s'affiche pas dans ta fenêtre, histoire que l'on s'assure si cela vient de ton image ou du gestionnaire graphique de ton système.

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo