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

Déploiement/Installation Python Discussion :

icone avec cx_freeze


Sujet :

Déploiement/Installation Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut icone avec cx_freeze
    Salut les pythons compilateur,
    Je cherche a utiliser l'option icon de cx_freeze sous Windows car je ne sais pas a quoi elle sert:
    Est-ce-que l'exécutable généré porte l'image de l'icone indiquée ou est ce pour faire un raccourcis ?
    J'ai chercher un peu sur le net sans trouver la bonne syntaxe et j'ai utiliser le tutoriel de Tyrtamos.
    Je suis même arriver a compiler mon programme avec l'option icon de Executable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Executable(
        script = "c:\chemin\vers\mon\script.py",
        base = base,
        compress = True,
         icon= "c:\chemin\vers\mon\icone.ico",
        )
    mais pas de trace de l'image dans le dossier généré...
    Si vous avez réponse a mes questions vous seriez sympa de poster.
    Merci pour vos réponses.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Sous Windows l’icône est inclus dans l’exécutable, pour les autres plate-formes il est mis dans le répertoire généré.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Bizarrement, avec l'option "icon" l'icône est inclue dans l'exécutable, et se montre dans la liste des fichiers de Windows Explorer, mais ne se montre pas en haut et à gauche de la fenêtre!

    Pour que l'icône apparaisse dans la fenêtre, il faut non seulement l'instruction PyQt4 (self.setWindowIcon(QtGui.QIcon(u'monicone.png'))), mais aussi la présence de l'icône dans le répertoire build\exe.win32-2.7: on obtient sa recopie automatique avec l'option includefiles du setup.py.
    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

  4. #4
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour vos réponse,
    Je n'utilise pas PyQT comme interface graphique mais Tkinter et j'ai lu la notice de cx_freeze qui manque sévèrement d'exemples pratiques.
    Tyrtamos le grand de part ton site, j'ai pu compiler mes programmes grâce aux tutoriels que tu a écrit sur ton site qui est géniale dont les codes suivant sont issues.
    Est-ce-qu'il est possible d'inclure une icone avec Tkinter comme interface graphique ou plutot quel est la syntaxe pour cette option, j'ai utiliser l'option icon de Executable en donnant le chemin vers le fichier mais ca na rien donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cible_1 = Executable(
        script = "concoursphotos.pyw",
        base = base,
        compress = True,
        icon = "c:\chemin\vers\mon\icone.ico",
        )
    Si quelqu'un connait la syntaxe de cette option ou si il faut également renseigner l'option icon dans le build:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    setup(
        name = "concoursphotos",
        version = "1",
        description = "Traitement de concours photos sous Windows et Linux",
        author = "Tyrtamos",
        options = {"build_exe": options},
        executables = [cible_1],
        icon = "je ne sais pas quoi mettre" 
        )
    Merci de bien vouloir m'éclairé.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    En fait pour les applications graphiques (principalement Tkinter de mon coté) ou je souhaite avoir une icône j'utilise de mon coté base64 pour l'inclure dans le code.
    Le code en est il plus lourd ? Pas trop à mon avis puisque base64 ne l'est pas comme module.
    De plus, pour vous sous Windows, cx_freeze l'inclus dans le code: Pourquoi ne pas le faire d'office ?

    @+
    Merci d'utiliser le forum pour les questions techniques.

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Avec tkinter, il faut essayer la même chose:

    1- utiliser l'option icon pour que cx-freeze l'intègre dans l'exe: icon = r"c:\chemin\vers\mon\icone.ico" (ne pas oublier le r"" ou doubler les '\')

    2- dans le code source Python, demander l'insertion de l'icône dans la fenêtre tkinter avec la méthode iconbitmap (voir le fil: http://www.developpez.net/forums/d57...fenetre-linux/)

    3- demander la copie automatique de l'icône pendant le traitement par cx-freeze avec l'option includefiles: il faut lui ajouter le tuple: (r"c:\chemin\vers\mon\icone.ico",".")

    Avec ça, icone.ico devrait se retrouver dans build\exe.win32-2.7, et être utilisé à l'exécution par la fenêtre tkinter.

    Essaie, et dis ce qui se passe!
    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
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    3- demander la copie automatique de l'icône pendant le traitement par cx-freeze avec l'option includefiles: il faut lui ajouter le tuple: (r"c:\chemin\vers\mon\icone.ico",".")
    Cela revient donc a copier l'icône comme cela est fait pour les autres systèmes.
    Pourquoi intégrer l’icône dans l'exe et le garder physiquement (sur le disque) ? Tordu non ?
    Pensez à ma proposition de l'inclure dans le code.
    Merci d'utiliser le forum pour les questions techniques.

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    @ PauseKawa: je constate simplement que l'option icon permet d'intégrer l'icone dans l'exécutable (on le voit parce que l'icône apparait dans le Windows Explorer), mais que ça ne suffit pas pour qu'il apparaisse en haut de la fenêtre: je suppose que c'est dû aux bibliothèques graphiques.
    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

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    @ PauseKawa: je constate simplement que l'option icon permet d'intégrer l'icone dans l'exécutable (on le voit parce que l'icône apparait dans le Windows Explorer), mais que ça ne suffit pas pour qu'il apparaisse en haut de la fenêtre: je suppose que c'est dû aux bibliothèques graphiques.
    shell32.dll contient aussi pas mal d'icônes mais ce n'est pas pour cela qu'il 'les utilises' (affiches).
    Merci d'utiliser le forum pour les questions techniques.

  10. #10
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Et pour:
    Citation Envoyé par tyrtamos Voir le message
    je suppose que c'est dû aux bibliothèques graphiques.
    Oui, l'image pour l’icône doit être spécifiée.
    Merci d'utiliser le forum pour les questions techniques.

  11. #11
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour vos nombreuse réponse.
    Je me suis également cassé les dents sur la méthode: Tkinter.iconbitmap(), en essayant d'additionner une icone afin quelle apparaisse dans la barre des taches sous Linux.
    Mais est-ce-que, a tout hasard (je viens de tomber dessus) PauseKawa utiliserai-t-il la méthode: Tkinter.iconwindow(pathName=None)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    help(a.iconwindow)
    Help on method wm_iconwindow in module Tkinter:
     
    wm_iconwindow(self, pathName=None) method of Tkinter.Tk instance
        Set widget PATHNAME to be displayed instead of icon. Return the current
        value if None is given.
    Afin d'inséré une icone codé en base64 ou est-ce plus compliqué que ca ?
    Concernant cx_freeze je vais essayer d'inclure le fichier *.ico mais si j'arrive pas a l'inclure avec la méthode Tkinter.iconbitmap() je ne peut pas allé bien loin, c'est a essayer...
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  12. #12
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #-*- coding: utf-8 -*-
    #
    #
    #
    try:
        import Tkinter as Tk
    except:
        import tkinter as Tk
    import os
    import base64
     
    b64icon = """ici le texte obtenu avec le code suivant:
    import base64
     
    with open('nomdelicone.ico', 'rb') as infile:
        s = infile.read()
    with open('nomdelicone.txt', 'w') as outfile:
        outfile.write(base64.encodestring(s))
    """
    iconfile = "appico.ico" # appico.xbm sous linux
    root = Tk.Tk()
    with open(iconfile, "wb") as iconout:
        iconout.write(base64.b64decode(b64icon))
    root.iconbitmap(iconfile) #'@'+iconfile sous linux
    os.remove(iconfile)
    root.mainloop()
    @+
    Merci d'utiliser le forum pour les questions techniques.

  13. #13
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour le code PausaKawa, le roi du script Tkinter, tu ne manque pas ressources concernant Tkinter et c'est souvent toi qui a répondu a mes questions concernant le sujet.

    PauseKawa the king of Tkinter !
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  14. #14
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Désolé pour le retard mais impossible de retrouver le code.

    Sans passer par un fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import Tkinter
     
     
    origindata ="""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"""
     
    root= Tkinter.Tk()
    imagecode = Tkinter.PhotoImage(data=origindata)
    root.tk.call('wm', 'iconphoto', root._w, imagecode)
    root.mainloop()
    @+
    Merci d'utiliser le forum pour les questions techniques.

  15. #15
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    PauseKawa the king of Tkinter, j'ai essayer ton code et suivis le lien et il s'avère que cela fonctionne parfaitement avec le format *.gif mais pas avec le format *.png ou *.ico, sous Linux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    a=file('/home/mon_nom/Images/fichier.png','rb') # ou '/home/mon_nom/Images/fichier.ico'
    b=a.read()
    c=base64.b64encode(b)
    img=Tkinter.PhotoImage(data=c)
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3247, in __init__
        Image.__init__(self, 'photo', name, cnf, master, **kw)
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3203, in __init__
        self.tk.call(('image', 'create', imgtype, name,) + options)
    TclError: couldn't recognize image data
    C'est dommage car j'utilise le format *.png pour mes dessins et les programmes de conversion de fichier ne sont pas légion sous Linux. Et d'ailleurs une *.png convertis en *.gif avec gimp ou online ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    a=file('/home/mon_nom/Bureau/ikon_02-png.gif','rb')
    >>> c=base64.b64encode(a.read())
    >>> img=Tkinter.PhotoImage(data=c)
    >>> root.tk.call('wm', 'iconphoto', root._w, img)
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TclError: can't use "pyimage12" as iconphoto: not a photo image
    Aurai tu une solution ?
    Merci beaucoup pour ton aide c'est déjà beaucoup de code.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  16. #16
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Imagemagick

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert ./image.png ./image.gif
    Et oui: Cela ne fonctionne qu'avec des gif (du moins avec Photoimage seul).
    Merci d'utiliser le forum pour les questions techniques.

  17. #17
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Citation Envoyé par Luke spywoker Voir le message
    C'est dommage car j'utilise le format *.png pour mes dessins
    A vrais dire puisque PhotoImage prend le format gif en base64 je n'ai pas tester.
    Le format GIF me vas bien: Utilisable avec Photoimage, Transparent pour les Canvas, Ne demande pas d'utiliser PIL, etc...

    Voici pour la demande:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import Tkinter
    import Image, ImageTk
    import base64
     
    # Image > fichier texte
    i = Image.open('image.png')
    imgSize = i.size # <<<<<<<<<<<<<<<<<<<<<<<< A garder
    print imgSize
    rawData = i.tostring()
    with open("outfile", "wb") as outfile:
        outfile.write(base64.b64encode(rawData))
     
     
    root = Tkinter.Tk()
     
    # Fichier texte > image
    with open("outfile", "rb") as infile:
        imgdata = base64.b64decode(infile.read())
     
    pilimage = Image.fromstring('L', imgSize, imgdata) # Voir .fromstring()
    tmpimg = ImageTk.PhotoImage(pilimage)
    root.tk.call('wm', 'iconphoto', root._w, tmpimg)
    root.mainloop()
    @+

    Plus complet:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import Tkinter
    import Image, ImageTk
    import base64
     
     
    # Image > fichier texte
    #i = Image.open('image.png')
    # A Garder ############################## ici
    #imgMode = i.mode
    #imgSize = i.size
    #print imgSize
    #print imgMode
    #############################################
    #rawData = i.tostring()
    #with open("outfile", "wb") as outfile:
    #    outfile.write(base64.b64encode(rawData))
     
     
    # Fichier texte > image
    #with open("outfile", "rb") as infile:
    #    imgdata = base64.b64decode(infile.read())
     
     
    root = Tkinter.Tk()
    imgdata = """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"""
    imgdata = base64.b64decode(imgdata)
    # Voir a garder
    imgMode = 'P'
    imgSize = (48, 48)
    #
    pilimage = Image.fromstring(imgMode, imgSize, imgdata) # Voir .fromstring()
    tmpimg = ImageTk.PhotoImage(pilimage)
    root.tk.call('wm', 'iconphoto', root._w, tmpimg)
    root.mainloop()
    Merci d'utiliser le forum pour les questions techniques.

  18. #18
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Maintenant puisque c'est pour mettre une image pour l’icône d'un exe pas besoin de faire des trucs du style
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    #
    #
    import Tkinter
    import Image, ImageTk
    import base64
     
     
    # Image > fichier texte
    #i = Image.open('image.png')
    #imgMode = i.mode
    #imgSize = i.size
    #rawData = base64.b64encode(i.tostring())
    #with open("outfile", "wb") as outfile:
    #    outfile.write("%s %d %d %s" % (imgMode, imgSize[0], imgSize[1], rawData))
    # Copier le contenu du fichier dans le code
     
    # Test
    # Fichier texte > image
    #with open("outfile", "r") as infile:
    #    img = infile.read().split()
    #imgMode = img[0]
    #imgSize = (int(img[1]), int(img[2]))
    #imgData = base64.b64decode(img[3])
    #icoimg = ImageTk.PhotoImage(Image.fromstring(imgMode, imgSize, imgData))
     
    root = Tkinter.Tk()
    # Contenu du fichier texte
    img = """P 48 48 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"""
    #
    img = img.split()
    icoimg = ImageTk.PhotoImage(Image.fromstring(img[0], (int(img[1]), int(img[2])),
                                                 base64.b64decode(img[3])))
    root.tk.call('wm', 'iconphoto', root._w, icoimg)
    root.mainloop()
    Un simple
    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 -*-
    #
    #
    import Tkinter
    import Image, ImageTk
    import base64
     
     
    root = Tkinter.Tk()
    img = """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"""
    icoimg = ImageTk.PhotoImage(Image.fromstring('L', (48, 48), base64.b64decode(img)))
    root.tk.call('wm', 'iconphoto', root._w, icoimg)
    root.mainloop()
    Est largement suffisant: Cela ne risque pas de changer.

    Mais difficile de faire plus simple que le GIF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import Tkinter
     
     
    origindata ="""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"""
     
    root= Tkinter.Tk()
    imagecode = Tkinter.PhotoImage(data=origindata)
    root.tk.call('wm', 'iconphoto', root._w, imagecode)
    root.mainloop()
    @+
    Merci d'utiliser le forum pour les questions techniques.

  19. #19
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Petites notes:
    iconphoto n'est disponible que depuis Tcl/Tk 8.4.8.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    patrice@Zeus:~$ wish
    % info patchlevel
    8.5.10
    % exit
    L'option default permet de garder le même icône pour les Toplevel.
    Un changement de l'image n'est pas répercuté en cours d'utilisation (elle est stockée dans _NET_WM_ICON sous X ou une structure icone sous Windows).
    Différents formats peuvent être utilisés, c'est le WM qui les redimensionnent.
    Sous Windows avec iconbitmap c'est le dernier spécifié qui est actif. Pas besoin d'utiliser les deux donc.
    Sous Linux c'est placé dans _NET_WM_ICON, cela doit donc être supporté par le WM. iconbitmap peut exister en même temps.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  20. #20
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste une petite astuce pour intégrer une icone directement dans le code source, mais en respectant la longueur des lignes (78 caractères par exemple).

    On part d'une variable 'icone' qui contient la chaine binaire de l'icône, obtenue par la lecture binaire du fichier ('rb').

    Pour l'exemple, on va la refabriquer (voir message précédent de ce fil):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import base64
    icone64 ="""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"""
    icone = base64.b64decode(icone64)
    On va utiliser la fonction suivante, qui va créer le code à insérer dans le code source:

    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
    16
    import base64
     
    def encodeb64chaine(chbin, nvar='ch64', nbcar=69, fdl='\n'):
        ch64 = base64.b64encode(chbin)
        ch = nvar + ' = "\\' + fdl
        lg = len(ch64)
        i2 = 0
        while True:
            i1 = i2
            i2 = min(i1+nbcar, lg)
            if i2>i1:
                ch += ch64[i1:i2] + '\\' +  fdl
            else:
                break
        ch += '"'
        return ch
    Avec:
    - chbin: la chaine binaire
    - nvar: le nom de variable à intégrer dans le code source
    - nbcar: le nombre de caractères par ligne
    - fdl: la fin de ligne

    Application avec la chaine binaire icone ci-dessus:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    print encodeb64chaine(icone, nvar='icone64', nbcar=78, fdl='\n')
    icone64 = "\
    R0lGODlhMAAwAIcAAQAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg\
    8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIi\
    IiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NT\
    Y2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJ\
    SUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF\
    1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3Bw\
    cHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4\
    SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeX\
    l5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqq\
    urq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+\
    vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0d\
    LS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl\
    5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+P\
    n5+fr6+vv7+/z8/P39/f7+/v///ywAAAAAMAAwAAcI/gABCBxIsKDBgwgTKlzIsKHDhxAjJuzwY4mV\
    ixihEDkh8WEFGFDUvHkzR0+fPnrszHmjJsuPDh0V/iAzsg+pZOLeybsnz5y1V4NWqoFSIWZBGF5Gkr\
    L27p/Tp1DviePF5w0ZIkYF/iDpqBi/f/ruiR1LVp9Tb5xIWinacclKTu94vptLt65dsbXmzCEDE2KF\
    LCtJmVuXbp3hw4gTE1737pdeMmwd/sBT8ho6cuTMad7MubM5zJk1zcGT5aENvXNafdPGrbVrbt9iy3\
    79+ls0P6OhOCSDB48fZ9WCB79GvLjx48KDY6I8BwZDIr3xRFrGjNmz69ejad/OHTt2Zs5E/vHprSby\
    wQ5v8PDhUykYsffI4suPr6z+fPnviRkTPx6PDZm98QGIJLzw4osvwCSY4DAMNtigggn6UqAngACyXm\
    kJZbEeIIQwEkstt4RY4Ii89GJiLySOGOIttVhCiIW9OXfQCaP5QUgiiIQCSywf1uLjikAC6aOPscCy\
    yiOEHELIerodRIQfNh7CCCOSlKJKK664AsuWsMji5ZeycAmLK620ogonjzCSCCFQeoGQF1DeyMgjk3\
    BySiqrrFLmnnz22coqp5wCyiSSTKmkH2yYJ1AFcsQ5pSSXZCLKnamoYumlmLKCaSqniMLJJZOkuaYf\
    cigKQAV2REnnJZxw8kko/qagImsqtNZqq6yomBLKJ61mUkkko9phKqqBGNJIJJVk4iopsdbKyrPQRl\
    trrqTwmgmoj6wprEGo3riqJ6Iwi0oq0GZp7rmuQJsKtZ76+ogihmxbUAV5EKLII5VwAoq4rLjC478A\
    B8xjuqqYQgoonPwKbx6mAjCHIYpEogm4pqji778h/igkkf9qaooonmgSSSOJ3NFwFokoYokmoJxi8S\
    wgrrjLzDTTHGQtsWh6SsiWQJJIGwgNsQgklnxSSiqvzHJLLrsUCOHTCvIycy44t3LKKJ1Y4ogjZCBE\
    LySZfHLKKq/UkksvEDqoNoS95HKLLK2kgvUljiyCRIaQir2K/ixLow3MMMUELvjgxQwT9dtxh7IJ3X\
    80LFAPkVzSSSl738ILMMIAXsx98wU+jDDA8KJLmKeQ4mskGCaUxyWbHC0LLrz8wiB99dVuX3yf/8IL\
    LrK4Usonl0iiyAsL1RAJJ6GoAostsQtjDO3VRc+MMvEZI8wvutgCiyqkeFKJJGc0tIYnYrtSiy6yP4\
    +M9NJXT8wwv+BSiyunfOJr4w118Ae4qsiyi+zEkI91vMMM/ARjF7fYHik4gQlHJOEhNaBEuMq2i2AM\
    Q4DeeUYBkfE+X+QCbjvDBCV6EJEaIIIUp3jFLSoYwPiwb4PD8GAtXiGoTEjiCR1RwQlTWIsKDqOFe+\
    vDTwx3MUNBeUISTcjKHfBUtlz4woL3KUYwZPiKVIgCFIioQVYEAoZLIA1EuzhQMMY4RV+wKG6muAQc\
    tLjFRXlBE6kY0s1wVsVO1EEFbeRWEtYgwVYArBWmoAQcqoDHPCpEBVMAwxgWiYUeOM6QkIykJCdJyU\
    pa8iEBAQA7\
    "
    Une fois intégrée dans le code source du programme par copier-coller, on retrouve, bien entendu, la chaine binaire initiale avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    icone = base64.b64decode(icone64)
    cf mon tuto: http://python.jpvweb.com/mesrecettes...ersions_base64

    L'avantage d'une telle présentation est que non seulement ça permet une impression 'propre' du source, mais aussi ça respecte les limites de certains éditeurs de texte qui n'aiment pas les lignes trop longues.
    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

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/03/2006, 11h35
  2. Réponses: 12
    Dernier message: 20/12/2005, 22h07
  3. [DELPHI 7] Icone avec couche alpha
    Par dav555 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/08/2005, 11h53
  4. Association d'une icone avec une dll
    Par ybruant dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/07/2005, 11h10
  5. Installation et perte d'icône avec Firebird
    Par SebCBien dans le forum Applications et environnements graphiques
    Réponses: 22
    Dernier message: 31/10/2004, 16h46

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