Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Discussion: icone avec cx_freeze

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

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 711
    Points : 454
    Points
    454

    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 :
    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: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

  2. #2
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    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.
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre éprouvé Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 711
    Points : 454
    Points
    454

    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 :
    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 :
    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: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

  5. #5
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    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!
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    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.
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 éprouvé Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 711
    Points : 454
    Points
    454

    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 :
    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: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

  12. #12
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    Par défaut

    Bonjour,
    Code :
    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 éprouvé Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 711
    Points : 454
    Points
    454

    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: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

  14. #14
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    Par défaut

    Bonjour,

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

    Sans passer par un fichier:
    Code :
    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 éprouvé Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    juin 2010
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : juin 2010
    Messages : 711
    Points : 454
    Points
    454

    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 :
    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 :
    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: Sanctuaire cybernétique
    Site: 3dreaming-imaging.net
    FUN is HARD WORK !!!

  16. #16
    Expert Confirmé Avatar de PauseKawa
    Homme Profil pro Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    Par défaut

    Imagemagick

    Code :
    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 Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 :
    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 :
    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 Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    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 :
    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 :
    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 :
    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 Patrice BLANGARIN
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    juin 2006
    Messages
    2 720
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrice BLANGARIN
    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 720
    Points : 3 953
    Points
    3 953

    Par défaut

    Petites notes:
    iconphoto n'est disponible que depuis Tcl/Tk 8.4.8.
    Code :
    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 Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    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 :
    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 :
    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 :
    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 :
    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.
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •