Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Déploiement/Installation
Déploiement/Installation Forum d'entraide sur le déploiement d'applications et sur l'installation/compilation de bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/06/2012, 23h57   #1
Luke spywoker
Membre éclairé
 
Avatar de Luke spywoker
 
Homme
Etudiant informatique autodidacte
Inscription : juin 2010
Messages : 591
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Etudiant informatique autodidacte

Informations forums :
Inscription : juin 2010
Messages : 591
Points : 370
Points : 370
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...
Blog: http://3dcyberspace.unblog.fr/
Site: Sanctuaire cybernétique
Luke spywoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 12h01   #2
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 12h27   #3
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 15h04   #4
Luke spywoker
Membre éclairé
 
Avatar de Luke spywoker
 
Homme
Etudiant informatique autodidacte
Inscription : juin 2010
Messages : 591
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Etudiant informatique autodidacte

Informations forums :
Inscription : juin 2010
Messages : 591
Points : 370
Points : 370
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...
Blog: http://3dcyberspace.unblog.fr/
Site: Sanctuaire cybernétique
Luke spywoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 15h23   #5
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 16h40   #6
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 16h55   #7
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
Citation:
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 17h09   #8
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
@ 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
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 17h28   #9
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 17h31   #10
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2012, 18h20   #11
Luke spywoker
Membre éclairé
 
Avatar de Luke spywoker
 
Homme
Etudiant informatique autodidacte
Inscription : juin 2010
Messages : 591
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Etudiant informatique autodidacte

Informations forums :
Inscription : juin 2010
Messages : 591
Points : 370
Points : 370
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...
Blog: http://3dcyberspace.unblog.fr/
Site: Sanctuaire cybernétique
Luke spywoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2012, 08h55   #12
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2012, 13h45   #13
Luke spywoker
Membre éclairé
 
Avatar de Luke spywoker
 
Homme
Etudiant informatique autodidacte
Inscription : juin 2010
Messages : 591
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Etudiant informatique autodidacte

Informations forums :
Inscription : juin 2010
Messages : 591
Points : 370
Points : 370
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...
Blog: http://3dcyberspace.unblog.fr/
Site: Sanctuaire cybernétique
Luke spywoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 18h29   #14
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 20h30   #15
Luke spywoker
Membre éclairé
 
Avatar de Luke spywoker
 
Homme
Etudiant informatique autodidacte
Inscription : juin 2010
Messages : 591
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Etudiant informatique autodidacte

Informations forums :
Inscription : juin 2010
Messages : 591
Points : 370
Points : 370
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...
Blog: http://3dcyberspace.unblog.fr/
Site: Sanctuaire cybernétique
Luke spywoker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 20h33   #16
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 22h01   #17
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 06h55   #18
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 07h27   #19
PauseKawa
Expert Confirmé
 
Avatar de PauseKawa
 
Homme Patrice BLANGARIN
Technicien Help Desk, maintenance, réseau, système et +
Inscription : juin 2006
Messages : 2 622
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 622
Points : 3 739
Points : 3 739
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.
PauseKawa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2012, 08h31   #20
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h08.


 
 
 
 
Partenaires

Hébergement Web