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 :

Comment mettre une icône de fenêtre avec Linux ?


Sujet :

Tkinter Python

  1. #1
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut Comment mettre une icône de fenêtre avec Linux ?
    Bonjour,

    J'ai un programme Python qui fonctionne en graphique tkinter sous Windows et sous Linux.

    J'ai voulu mettre une icône en haut et à gauche de la fenêtre.

    Sous Windows, ça marche, même avec py2exe (et même avec psyco) avec une solution du genre (icone.ico est dans le répertoire du programme):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fen=Tkinter.Tk()
    app=Application(fen)
    if sys.platform=='win32':
        fen.iconbitmap(os.path.dirname(sys.argv[0]) + os.sep + 'icone.ico')
    else:
        # ici partie destinée à Linux
        pass
    fen.mainloop()

    Mais sous Linux, ça ne marche pas avec iconbitmap(), quelque soit le format de l'icône, et même si je mets le chemin complet de l'icône. J'ai essayé de nombreuses solutions trouvées sur le web.

    Quelqu'un a-t-il une solution?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Réponse partielle:

    J'avais essayé (entre autres) le format d'icône ".xpm", mais c'est le ".xbm" qu'il faut. La conversion entre icone.ico de Windows et le icone.xbm de Linux se fait facilement avec gimp (Windows ou Linux).

    Ce faisant, le code suivant marche maintenant sous Windows ET sous Linux (les 2 icônes .ico et .xbm sont dans le même répertoire que le programme .py exécuté):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if sys.platform=='win32':
        fen.iconbitmap(os.path.dirname(sys.argv[0]) + os.sep + 'icone.ico')
    elif sys.platform=='linux2':
        fen.iconbitmap("@" + os.path.dirname(sys.argv[0]) + os.sep + 'icone.xbm')
    Mais, car il y a un "mais", l'icône est en noir et blanc sous Linux. Pourtant, le format .xbm est à couleurs indexées (comme .gif), et j'avais demandé 2 couleurs (j'avais du rouge et du blanc) et pas du noir et blanc. J'ai tout de même récupéré du noir et du blanc.

    Je continue à chercher pour avoir de la couleur: si quelqu'un sait faire...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    Salut, j'ai aussi écumé les forums en tout genre pour trouver une réponse à ce problème et je me suis laissé dire (malheureusement je ne retrouve pas le lien) que changer l'icone n'est pas "possible" sous linux, du fait que ... je ne sais plus trop quoi n'est pas suporté par... et donc hormis les bitmaps noir et blanc (ou gris...) on ne peut pas changer l'icone par une icone de notre choix en couleur. Désolé si mes explications sont parsemées de ... mais je ne me souviens pas du coté technique, mais seulement de la conclusion.

    J'espère cependant que quelqu'un aura une réponse pour contredire ce que j'ai pu lire, cela me permettre à moi aussi de changer mon icone sous linux!!!

    PS : mon commentaire ne concerne que tkinter.... avec wx et gtk, c'est possible si je ne me trompe pas.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    Je me rappelle seulement que l'on peut peut etre utiliser ceci :

    http://sourceforge.net/projects/hackicon/

    mais j'ai jamais testé

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 160
    Points : 91
    Points
    91
    Par défaut
    j'ai trouvé un post qui ressemble à ce que j'avais lu (pas sur que ce soit exactement ca..) expliquant pourquoi on ne peut pas avoir ce que l'on veut comme icone sous linux avec Tk:

    >Note that the "standard X11 format" is
    > monochrome, so you will not be able to use color images with
    > "iconbitmap" on Linux. Tk doesn't support _NET_WM_ICON for setting
    > full-color icons.

    Voici le post en question:
    http://mail.python.org/pipermail/pyt...ch/314600.html

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    J'ai vu aussi: http://www.developpez.net/forums/sho...d.php?t=347848, et en particulier le message #4 qui parle de iconwindow(). Je suis passé par PIL, mais Python refuse mon iconwindow () avec le message d'erreur: "can't use .136575340 as icon window: not at top level".

    Je crois que j'arrive au bout du temps qu'il était raisonnable de consacrer à cette question . J'en reste pour l'instant à l'icône Linux en noir et blanc.

    Merci de ton aide, atalon1!
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Salut tout le monde, désolé pour le déterrage de topic, mais voici une solution sans autre module que Tkinter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    root = Tk()
    #...
    icon = PhotoImage(file='./img/icon.gif')
    root.tk.call('wm', 'iconphoto', root._w, icon)
    root.mainloop()

    @+++

Discussions similaires

  1. Comment assigner une icône à un fenêtre?
    Par Nixar dans le forum Windows Forms
    Réponses: 9
    Dernier message: 31/10/2007, 13h23
  2. Comment mettre en place un Jlabel avec une image de fond?
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 08/05/2007, 17h52
  3. Réponses: 3
    Dernier message: 01/12/2006, 08h34
  4. Réponses: 7
    Dernier message: 15/11/2006, 14h23
  5. Comment mettre une fenêtre au premier plan?
    Par damien99 dans le forum MFC
    Réponses: 11
    Dernier message: 30/08/2006, 11h37

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