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 :

Traductions et images dans le code source


Sujet :

Déploiement/Installation Python

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut Traductions et images dans le code source
    Bonjour.
    J'aimerais traduire mon application dans différentes langues, puis que la langue du système soit choisie. Pour cela, je sais que Gettext existe (et qu'il est même fournit sous Win par Python, donc pas besoin de faire installer aux utilisateurs GNU Gettext).
    Ensuite, je voudrais mettre des images pour la fenêtre avec Tkinter. Mais le xbm s'affiche très mal : mon image est incomplète, peut-être esse-dû aux trop nombreuses couleurs du logo ?.
    Mais le principal problème, c'est que je veux que tout soit dans un unique fichier. Je ne veux pas de py2exe, qui sera lourd et plus interopérable. Si je crée un bytecode Python, mon image n'est pas dedans, donc je suppose que pour les fichiers de traductions, c'est pareil.
    Comment centraliser le tout en un fichier ? Je veux bien qu'il y ait plusieurs fichiers sources, mais un seul et unique fichier exécutable (interprété, ou compilé si il existe un moyen de laisser l'interopérabilité).
    Et si il existe une bibliothèque qui me permette de mettre des icônes en couleurs sous Linux et que je peux intégrer dans mon fichier executable ou intégrée dans Python, ça m'intéresse aussi (tout en continuant d'utiliser Tkinter).
    Merci.

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut
    Connaissez vous les egg de setuptools?
    Les distributions de zc.buildout?
    Si oui: qu'est ce que çà ne fait pas selon vos attentes,
    Si non: commencez par là?
    Mais je ne suis pas certain d'avoir tout compris.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Merci pour votre réponse.
    Non, je ne connaissais pas. Je vais voir sur Google.

    Merci.

    ==Edit==
    Ça m'a l'air un peu compliqué. En fait, je voudrais savoir si je pouvais inclure des images dans un code comme dans le shell d'installation de Dofus : http://dl.ak.ankama.com/games/dofus2...fusInstall.run (pas le tofu, mais les images qui sont copiés dans $ ankama/Dofus/share/icons/)
    pour les utiliser directement dans ma fenetre comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f.iconbitmap("Monicone.ico")
    où Monicone.ico correspondrait au code de l'image "compilée" dans le code source ou dans le bytecode.
    Et si je ne peux pas l'utiliser directement, alors copier le code binaire de l'image dans /usr/share/icons/

    Puis pour les traductions, si il n'y a pas de façon simple de faire ce que je cherche, je vais soit ne pas les faire, soit créer des variables, même si je fais tout pour limiter l'utilisation de la RAM.

    C'est possible ?

  4. #4
    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 Spitfire 95,

    La première partie devrais te convenir.

    Bon code
    Merci d'utiliser le forum pour les questions techniques.

  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
    Re,

    Citation Envoyé par Spitfire 95 Voir le message
    Et si il existe une bibliothèque qui me permette de mettre des icônes en couleurs sous Linux et que je peux intégrer dans mon fichier executable ou intégrée dans Python, ça m'intéresse aussi (tout en continuant d'utiliser Tkinter)
    Si tu trouve fais moi signe. Le format tk sous X11 est monochrome, même pas bicolore... Même si tu ne mets que du rouge/bleu tu te retrouve avec du noir/blanc...

    Pour ce qui est de ma réponse précédente le but est de stocker les objets binaires (images, exécutables, etc...) sous la forme de code hexa qui ne pose pas problème à la lecture du code. Soit en fait de créer un setup.py avec tout ce qui est nécessaire dedans. Ce que tu recherche il me semble
    L'idée viens de l'utilisation du code d'une image pour PhotoImage, ce que tu as du déjà voir sur le net, et sur un script d'installation sous tux.

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

  6. #6
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f.iconbitmap("23646566696e652063616c63756c6174726963655f77696474682034350a23646566696e652063616c63756c6174726963655f6865696768742034350a73746174696320756e7369676e656420636861722063616c63756c6174726963655f626974735b5d203d207b0a202020307830302c20307830302c20307866652c20307830372c20307830302c20307830302c20307830302c20307863302c20307866662c20307833662c20307830302c20307830302c0a202020307830302c20307865302c20307866662c20307866662c20307830302c20307830302c20307830302c20307866302c20307866662c20307866662c20307830312c20307830302c0a202020307830302c20307837302c20307866632c20307866662c20307830312c20307830302c20307830302c20307833302c20307866632c20307866662c20307830312c20307830302c0a202020307830302c20307837302c20307866632c20307866662c20307830312c20307830302c20307830302c20307866302c20307866662c20307866662c20307830332c20307830302c0a202020307830302c20307866382c20307866662c20307866662c20307830332c20307830302c20307830302c20307866382c20307866662c20307866662c20307830332c20307830302c0a202020307830302c20307862302c20307864642c20307866662c20307830332c20307830302c20307830302c20307837632c20307861312c20307864362c20307830332c20307830302c0a202020307866302c20307866662c20307862652c20307866642c20307830322c20307830302c20307866382c20307865662c20307865642c20307865622c20307830332c20307830302c0a202020307866632c20307866662c20307837662c20307866662c20307830332c20307830302c20307866652c20307862662c20307866662c20307866662c20307830332c20307830302c0a202020307866652c20307866662c20307866662c20307836662c20307830332c20307830302c20307866652c20307866662c20307866662c20307866662c20307830332c20307830302c0a202020307866662c20307866662c20307866662c20307866662c20307830312c20307830302c20307866662c20307866662c20307866662c20307864662c20307830312c20307830302c0a202020307866662c20307866662c20307862652c20307837662c20307830302c20307830302c20307866662c20307866662c20307866662c20307837622c20307830302c20307830302c0a202020307866662c20307837662c20307830302c20307830302c20307830302c20307830302c20307866662c20307839662c20307830302c20307835302c20307830312c20307830302c0a202020307866662c20307830662c20307832342c20307830312c20307830302c20307830302c20307866662c20307830372c20307830302c20307832302c20307830302c20307830302c0a202020307866662c20307834372c20307830302c20307830322c20307830312c20307830302c20307866662c20307830372c20307832342c20307832302c20307830302c20307830302c0a202020307866652c20307838372c20307830302c20307838382c20307830302c20307830302c20307866652c20307830662c20307832302c20307830302c20307830302c20307830302c0a202020307866632c20307830372c20307830322c20307831302c20307830312c20307830302c20307866632c20307834662c20307830342c20307832312c20307830302c20307830302c0a202020307866382c20307830372c20307830302c20307830302c20307830312c20307830302c20307865302c20307838372c20307834382c20307837342c20307830322c20307830302c0a202020307830302c20307830382c20307830302c20307830302c20307830302c20307830302c20307830302c20307830382c20307830302c20307830302c20307830302c20307830302c0a202020307830302c20307838302c20307831322c20307839312c20307830322c20307830302c20307830302c20307831302c20307832302c20307830322c20307830302c20307830302c0a202020307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c0a202020307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c0a202020307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c20307830302c0a202020307830302c20307830302c20307830302c20307830302c20307830302c2030783030207d3b0a")
    Ça ne fonctionne pas. Si je crée un fichier .xbm contenant ça, ni GIMP, ni Google Chrome (mon navigateur internet, lecteur multimédia et visionneur d'images) ne parviennent à l'ouvrir.
    Le code, après modifications (pour avoir le résultat en console) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
     
    import binascii
     
    def lirefichier(fichier):
        f=open(fichier, 'rb')
        donnees = f.read()
        f.close()
        return binascii.b2a_hex(donnees)
     
    print lirefichier('calculatrice.xbm')
    Et si je lis l'image sans convertir, j'obtient un code en C :
    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
    #define calculatrice_width 45
    #define calculatrice_height 45
    static unsigned char calculatrice_bits[] = {
       0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00,
       0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00,
       0x00, 0x70, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x30, 0xfc, 0xff, 0x01, 0x00,
       0x00, 0x70, 0xfc, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x03, 0x00,
       0x00, 0xf8, 0xff, 0xff, 0x03, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x03, 0x00,
       0x00, 0xb0, 0xdd, 0xff, 0x03, 0x00, 0x00, 0x7c, 0xa1, 0xd6, 0x03, 0x00,
       0xf0, 0xff, 0xbe, 0xfd, 0x02, 0x00, 0xf8, 0xef, 0xed, 0xeb, 0x03, 0x00,
       0xfc, 0xff, 0x7f, 0xff, 0x03, 0x00, 0xfe, 0xbf, 0xff, 0xff, 0x03, 0x00,
       0xfe, 0xff, 0xff, 0x6f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00,
       0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xdf, 0x01, 0x00,
       0xff, 0xff, 0xbe, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7b, 0x00, 0x00,
       0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9f, 0x00, 0x50, 0x01, 0x00,
       0xff, 0x0f, 0x24, 0x01, 0x00, 0x00, 0xff, 0x07, 0x00, 0x20, 0x00, 0x00,
       0xff, 0x47, 0x00, 0x02, 0x01, 0x00, 0xff, 0x07, 0x24, 0x20, 0x00, 0x00,
       0xfe, 0x87, 0x00, 0x88, 0x00, 0x00, 0xfe, 0x0f, 0x20, 0x00, 0x00, 0x00,
       0xfc, 0x07, 0x02, 0x10, 0x01, 0x00, 0xfc, 0x4f, 0x04, 0x21, 0x00, 0x00,
       0xf8, 0x07, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x87, 0x48, 0x74, 0x02, 0x00,
       0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x80, 0x12, 0x91, 0x02, 0x00, 0x00, 0x10, 0x20, 0x02, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    Mais Tkinter n'accepte pas le tupple obtenu.
    Merci.

  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
    Bonjour,

    Pour ce qui est de ma réponse précédente le but est de stocker les objets binaires (images, exécutables, etc...) sous la forme de code hexa qui ne pose pas problème à la lecture du code.

    binascii.b2a_hex/binascii.a2b_hex

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

  8. #8
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Si je copie le code retourné par le terminal avec cat ou par la fonction read de python dans un fichier .xbm, GIMP parviens à le lire et Tkinter réussit à l'ouvrir en temps qu'icône de fenêtre.
    Mais si je lui donne ce code dans la méthode iconbitmap, il n'y arrive pas
    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
    f.iconbitmap("""
    #define calculatrice_width 45
    #define calculatrice_height 45
    static unsigned char calculatrice_bits[] = {
       0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00,
       0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00,
       0x00, 0x70, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x30, 0xfc, 0xff, 0x01, 0x00,
       0x00, 0x70, 0xfc, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00,
       0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0x7f, 0x04, 0x00,
       0xf0, 0xc7, 0xff, 0x7f, 0xfc, 0x01, 0xf8, 0xc7, 0xff, 0x7f, 0xfc, 0x03,
       0xfc, 0xc7, 0xff, 0x7f, 0xfc, 0x07, 0xfe, 0x07, 0x00, 0x00, 0xfc, 0x0f,
       0xfe, 0xc7, 0x18, 0x63, 0xfc, 0x0f, 0xff, 0x27, 0xa5, 0x94, 0xfc, 0x0f,
       0xff, 0x27, 0xa5, 0x94, 0xfc, 0x1f, 0xff, 0xc7, 0x18, 0x63, 0xfc, 0x1f,
       0xff, 0x07, 0x00, 0x00, 0xfc, 0x1f, 0xff, 0xc7, 0x18, 0x63, 0xfc, 0x1f,
       0xff, 0x27, 0xa5, 0x94, 0xfc, 0x1f, 0xff, 0x27, 0xa5, 0x94, 0xfc, 0x1f,
       0xff, 0xc7, 0x18, 0x63, 0xfc, 0x1f, 0xff, 0x07, 0x00, 0x00, 0xfc, 0x1f,
       0xff, 0xc7, 0x18, 0x63, 0xfc, 0x1f, 0xff, 0x27, 0xa5, 0x94, 0xfc, 0x1f,
       0xfe, 0x27, 0xa5, 0x94, 0xfc, 0x0f, 0xfe, 0xc7, 0x18, 0x63, 0xfc, 0x0f,
       0xfc, 0x07, 0x00, 0x00, 0xfc, 0x07, 0xfc, 0xc7, 0x18, 0x63, 0xfc, 0x07,
       0xf8, 0x27, 0xa5, 0x94, 0xfc, 0x03, 0xe0, 0x27, 0xa5, 0x94, 0xfc, 0x00,
       0x00, 0xc0, 0x18, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00,
       0x00, 0xf8, 0xff, 0xc7, 0x03, 0x00, 0x00, 0xf8, 0xff, 0x87, 0x03, 0x00,
       0x00, 0xf0, 0xff, 0xc7, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x01, 0x00,
       0x00, 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00,
       0x00, 0x00, 0xfd, 0x0b, 0x00, 0x00 };
    """)
    Pourtant, la méthode iconbitmap va chercher le contenu de l'image, non ? Alors comme entrer ce code ?
    Merci.

  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
    Bonjour,

    Je ne sais pas si cela fonctionne sous Windows mais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import Tkinter
    import os
     
    # Code optenu avec base64.b64encode
    origindata ="""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"""
     
    #with open(os.path.join(os.getcwd(), 'codeimage.txt'), 'rb') as photo:
    #    origindata = photo.read()
     
    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.

  10. #10
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Merci, ça fonctionne, mais j'ai pas tout compris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # Code optenu avec base64.b64encode
    J'ai essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import base64
    f=open('calculatrice.xbm', 'rb')
    donnees = f.read()
    f.close
    print base64.b64encode(donnees)
    Est-ce bien comme ça qu'il s'obtient ?
    Ce sera compatible entre les architectures 32/64 bits ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #with open(os.path.join(os.getcwd(), 'codeimage.txt'), 'rb') as photo:
    #    origindata = photo.read()
    Quel différence entre cette fonction et la lecture simple du fichier ? Si je met le chemin de mon image au lieu de codeimage.txt, j'obtiens le même résultat qu'avec cat (et terminal) et la méthode read.

    Merci.

  11. #11
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Ça fonctionne sous Linux (en 32 bits).
    En utilisant la fonction base64.b64decode avec pour arguments la série de chiffres et de lettre que vous avez obtenu, j'ai remarqué que vous avez utilisé une image GIF, et non pas une x-bitmap. Et quand j'utilise le programme avec mon image au format GIF, ça fonctionne.
    Pour Windows, je ne peux pas tester, je vais donc devoir réveiller mon testeur

    Merci.

  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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    # -*- coding: iso-8859-15 -*-
    #
    #
    import Tkinter
    from tkFileDialog import askopenfilename
    import base64
    import os
     
    class codedecode(Tkinter.Tk):
        def __init__(self):
            Tkinter.Tk.__init__(self)
            scrolltext = Tkinter.Scrollbar(self)
            self.textimage = Tkinter.Text(self, bg='yellow', fg='black', yscrollcommand=scrolltext.set)
            scrolltext.config(command=self.textimage.yview)
            self.textimage.pack(side=Tkinter.LEFT, fill=Tkinter.Y, pady=10)
            scrolltext.pack(side=Tkinter.LEFT, fill=Tkinter.Y, pady=10)
            self.cadrecanv=Tkinter.Frame()
            self.Canvasorigine = Tkinter.Canvas(self.cadrecanv, bg='white')
            self.Canvasdecode = Tkinter.Canvas(self.cadrecanv, bg='green')
            self.Canvasorigine.pack()
            self.Canvasdecode.pack()
            self.cadrecanv.pack(side=Tkinter.LEFT, pady=10, padx=10)
            self.cadreb=Tkinter.Frame()
            Tkinter.Button(self.cadreb, text='Ouvrir...', command=self.openimage).pack(pady=10, padx=10)
            Tkinter.Button(self.cadreb, text='Quitter', command=self.quit).pack(pady=10, padx=10)
            self.cadreb.pack(side=Tkinter.LEFT)
     
        def openimage(self):
            self.textimage.delete(0.0, Tkinter.END)
            self.Canvasorigine.delete(Tkinter.ALL)
            self.Canvasdecode.delete(Tkinter.ALL)
            imagename = askopenfilename(initialdir = os.path.expanduser('~'), filetypes = [('GIF','*.gif'), ("PMG", "*.pmg")])
            if imagename:
                # affichage de l'image d'origine pour comparaison
                imageor = Tkinter.PhotoImage(file = imagename)
                self.Canvasorigine.create_image(0, 0, image = imageor, anchor=Tkinter.NW)
                self.Canvasorigine.image = imageor
                # Lecture du fichier et convertion avec base64
                with open(imagename, 'rb') as photo:
                    origindata = base64.b64encode(photo.read())
                # Affichage du code
                self.textimage.insert(Tkinter.END, origindata)
                # affichage de l'image à partir du code
                imagecode = Tkinter.PhotoImage(data = origindata)
                self.Canvasdecode.create_image(0, 0, image = imagecode, anchor=Tkinter.NW)
                self.Canvasdecode.image = imagecode
                # Ecriture d'un fichier pour intégrer dans le code
                with open(os.path.join(os.getcwd(), 'codeimage.txt'), 'wb') as fichierphoto:
                    fichierphoto.write(origindata)
     
    if __name__=='__main__':
        app = codedecode()
        app.mainloop()
    @+
    Merci d'utiliser le forum pour les questions techniques.

  13. #13
    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,

    Citation Envoyé par Spitfire 95 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # Code optenu avec base64.b64encode
    J'ai essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import base64
    f=open('calculatrice.xbm', 'rb')
    donnees = f.read()
    f.close
    print base64.b64encode(donnees)
    Est-ce bien comme ça qu'il s'obtient ?
    Ce sera compatible entre les architectures 32/64 bits ?
    Citation Envoyé par Spitfire 95 Voir le message
    Ça fonctionne sous Linux (en 32 bits).
    En utilisant la fonction base64.b64decode avec pour arguments la série de chiffres et de lettre que vous avez obtenu, j'ai remarqué que vous avez utilisé une image GIF, et non pas une x-bitmap. Et quand j'utilise le programme avec mon image au format GIF, ça fonctionne.
    PhotoImage supporte les gif (et les ppm il me semble, pas testé) encodés avec base64. C'est dans la doc.
    Pour ce qui est des architectures je n'ai jamais tester mais après tout ce n'est que du texte et PhotoImage est le même en 32/64...

    En fait que ce soit base64 ou binascii le but est d'avoir des string à inclure dans le code pour éviter une erreur eof à la lecture de celui ci.
    Photoimage supporte aussi directement le code binaire retourné par binascii
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    photo='474946383961300030008700010000000101010202020303030404040505050606060707070808080909090a0a0a0b0b0b0c0c0c0d0d0d0e0e0e0f0f0f1010101111111212121313131414141515151616161717171818181919191a1a1a1b1b1b1c1c1c1d1d1d1e1e1e1f1f1f2020202121212222222323232424242525252626262727272828282929292a2a2a2b2b2b2c2c2c2d2d2d2e2e2e2f2f2f3030303131313232323333333434343535353636363737373838383939393a3a3a3b3b3b3c3c3c3d3d3d3e3e3e3f3f3f4040404141414242424343434444444545454646464747474848484949494a4a4a4b4b4b4c4c4c4d4d4d4e4e4e4f4f4f5050505151515252525353535454545555555656565757575858585959595a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606161616262626363636464646565656666666767676868686969696a6a6a6b6b6b6c6c6c6d6d6d6e6e6e6f6f6f7070707171717272727373737474747575757676767777777878787979797a7a7a7b7b7b7c7c7c7d7d7d7e7e7e7f7f7f8080808181818282828383838484848585858686868787878888888989898a8a8a8b8b8b8c8c8c8d8d8d8e8e8e8f8f8f9090909191919292929393939494949595959696969797979898989999999a9a9a9b9b9b9c9c9c9d9d9d9e9e9e9f9f9fa0a0a0a1a1a1a2a2a2a3a3a3a4a4a4a5a5a5a6a6a6a7a7a7a8a8a8a9a9a9aaaaaaabababacacacadadadaeaeaeafafafb0b0b0b1b1b1b2b2b2b3b3b3b4b4b4b5b5b5b6b6b6b7b7b7b8b8b8b9b9b9babababbbbbbbcbcbcbdbdbdbebebebfbfbfc0c0c0c1c1c1c2c2c2c3c3c3c4c4c4c5c5c5c6c6c6c7c7c7c8c8c8c9c9c9cacacacbcbcbcccccccdcdcdcecececfcfcfd0d0d0d1d1d1d2d2d2d3d3d3d4d4d4d5d5d5d6d6d6d7d7d7d8d8d8d9d9d9dadadadbdbdbdcdcdcdddddddedededfdfdfe0e0e0e1e1e1e2e2e2e3e3e3e4e4e4e5e5e5e6e6e6e7e7e7e8e8e8e9e9e9eaeaeaebebebecececedededeeeeeeefefeff0f0f0f1f1f1f2f2f2f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f8f8f8f9f9f9fafafafbfbfbfcfcfcfdfdfdfefefeffffff2c00000000300030000708fe0001081c48b0a0c18308132a5cc8b0a1c387102326ecf06389958b18a1103921f161051850d4bc7933474f9f3e7aeccc79a326cb8f0e1d15fe2033b20fa964e2dec9bb27cf9cb5578356aa8152216641185e4692b2f6ee9fd3a750ef89e3c5e70d19224605fe20e9a818bf7ffaee891d4b569f536f9c485a29da71c94a4eef78be9b4bb7ae5db1b5e6cc21031362852c2b49995b976e9de1c38813135ef7ee975e326c1dfec053f21a3a72e4cc69deccb9b339cc9935cdc193e5a10dbd735a7dd3c6adb56b6edf62cb7efdfa5b343fa3a1382483078f1f67d58207bf46bcb8f1e3c28363a23c07064322bdf1445ac68cd9b3ebd7a369dfce1d3b7666ce44fef1e9ad26f2c10e6ff0f0e1532918b1f7c8e2cb8fafacfe7cf9ef8919133f1e8f0d99bdf1018824bcf0e28b2fc02498e0300c36d8a08209fa52a0278000b25e690965b11e208430124b2db78458e088bcf462622f248e18e22db558428885bd3977d009a3f94148228884024b2c1fd6e2e38a4002e9a38fb1c0b2ca23841c42c87aba1d44841f361ec208239294a24a2baeb802cb96b0c8e2e597b270098b2badb4a20a278f30920821507a81901750dec8c8239370724a2aabac52e69e7cf6d9ca2aa79c02ca24924ca9a41f6c9827500572c439a524976422ca9da9a862e9a598b282692aa788c2c92593a4b9a61f72280a4005764449e7259c70f24928fea6a0226b2ab4d66aabaca89812ca27ad66524924a3da612aaa8118d248249564e22a29b1d6cacab3d0465b6baea4f09a09a88fac29ac41a8deb8aa27a2308b4a2ad06669eeb9ae409b0ab59efafa8822866c5b50057910a2c8239570028ab8acb8c2e3bf0007cc63baaa98420a289cfc0a6f1ea6023087218a44a209b8a6a8e2efbf21fe282491ff6a6a8a289e6812492389dcd170168928628926a09c62f12c20aeb8cbcc34d31c642db1687a4ac8964092481b080db10824967c524a2aafcc724b2ebb1408e1d30af232732e38b772ca289d58e288236420442f24997c72ca2aafd4924b2f103aa83684bde4728b2cada482f5258e2c824486908abd8afe2c4ba30dcc30c5042ef8e0c50c13f5db7187b209dd7f342c500f915cd249297bdfc20b30c2005ecc7df3053e8c30c0f0a24b98a790e26b24182694c7259b1c2d0b2ebcfcc2207df5d56e5f7c9fffc20b2eb2b852ca279748a2c80b0bd5100927a1a8028b2db10b630cedd545cf8c32f11923cc2fbad8028b2aa4785289246734b4862762bb528b2eb23f8f8cf4d2574fcc30bfe0528b2ba77ce26be30d75f007b8aac8b28becc4908f75bcc30cfc046317b7d81e293881094724e12135a044b8cab68b600c4380de79460191f13e5fe4026e3bc304257a10911a208214a778c52d2a18c0f8b06f83c3f0602d5e21a84c48e2091d51c10953588b0a0ea3857bebc34f0c773143417942124dc8ca1df054b65cf8c282f729463064f88a5488021488a841560402864b200d44bb385030c638455fb0286ea6b8041cb4b8c545794113a918d2cd7056c54ed441056de45612d620c15600ac15a6a0041caa80c73c2a44055300c3181689851e38ce90908ca4242749c94a5af2210101003b'
    monimage = Tkinter.PhotoImage(data = binascii.a2b_hex(photo))
    Mais puisque il supporte base64 en natif autant ne pas réinventer la roue.

    Citation Envoyé par Spitfire 95 Voir le message
    Quel différence entre cette fonction et la lecture simple du fichier ? Si je met le chemin de mon image au lieu de codeimage.txt, j'obtiens le même résultat qu'avec cat (et terminal) et la méthode read
    Comme tu l'auras compris cela viens du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                # Ecriture d'un fichier pour intégrer dans le code
                with open(os.path.join(os.getcwd(), 'codeimage.txt'), 'wb') as fichierphoto:
                    fichierphoto.write(origindata)
    du dernier code.
    A noter : rb/wb

    Pour ce qui est de ton 'testeur' je suis curieux de voir si cela fonctionne.
    En fait le tk.call utilisé (iconphoto) ne fonctionne qu'en tcl 8.5 (il me semble) et ce n'est pas inclus dans Tkinter.py.
    Je suppose que pour Windows il va falloir passer par une autre solution (un Label et iconwindow ?*) et tester la plateforme.

    Pour généraliser (attention : avis personnel. A corriger si besoin) il me semble que pour l'intégration d'objets (images, binaires...) dans du code passe par la conversion en string afin d'éviter les problèmes de lecture du code (erreurs EOF principalement).
    Pour ce qui est des images autant utiliser base64 puisque PhotoImage le supporte et pour les binaires binascii me semble pas mal d'après mes tests.

    @+

    *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    photo = Tkinter.PhotoImage(tonimage)
    imglabel = Tkinter.Label(image=photo)
    root.iconwindow(imglabel)
    Merci d'utiliser le forum pour les questions techniques.

  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
    Re,

    Pour répondre à wiztricks c'est aussi une idée que j'avais eu il y a un petit moment : Inclure du code (images, binaires, rpm etc...) dans un seul fichier d'installation.
    C'est ce qui est fais en shell par Makeself que nous utilisons au boulot pour mettre à jour les distribs des serveurs.
    Merci d'utiliser le forum pour les questions techniques.

  15. #15
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses.
    Pour Windows, je ne peux pas tester moi-même : mon PC est sous Ubuntu 10.04, mon portable sous Lubuntu 10.10. Le PC de mon père est sous Win XP, mais son DD est plein, donc il me laissera pas installer un interpréteur Python, et le PC de la société, j'ai pas le droit d'y toucher, donc je dois demander à mon "testeur" qui est sous Windows 7, mais il a 12ans et n'y connais rien à l'informatique (mais c'est pour lui que j'ai continué à développer mon soft, et il ne serait pas sous Win, je n'aurais même pas chercher à faire fonctionner mes icônes sous cette plateforme.

    Pour les traductions, je vais faire simple. Soit j'utilise des variables (déclarés dans des instructions if/elif/else (else pour l'anglais)) (code plus court, plus simple à maintenir), soit je met les tests dans le programme, sans variables (code plus long, mais moins gourmand en RAM). Ou je le fais pas.

    Mais puisque il supporte base64 en natif autant ne pas réinventer la roue.
    Je visite actuellement /usr/lib/python2.6/. Et b64encode a justement réinventé la roue :
    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
    def b64decode(s, altchars=None):
        """Decode a Base64 encoded string.
     
        s is the string to decode.  Optional altchars must be a string of at least
        length 2 (additional characters are ignored) which specifies the
        alternative alphabet used instead of the '+' and '/' characters.
     
        The decoded string is returned.  A TypeError is raised if s were
        incorrectly padded or if there are non-alphabet characters present in the
        string.
        """
        if altchars is not None:
            s = _translate(s, {altchars[0]: '+', altchars[1]: '/'})
        try:
            return binascii.a2b_base64(s)
        except binascii.Error, msg:
            # Transform this exception for consistency
            raise TypeError(msg)
    Ou alors, c'est ce que vous vouliez dire, ou alors ça n'a aucun rapport.

    Merci.

  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
    Bonjour,

    Pour information cela fonctionne sous Vista sans problème.

    Je parlais de base64 (base64.b64encode/b64decode, binascii.b2a_base64/.a2b_base64, même combat) en général. base64.py ne fait que rajouter +- la gestion des erreurs. Donc, à moins de vouloir refaire le code de base64.py, autant utiliser l'existant. Maintenant de la à parler de réinventer la roue...

    Bon code

    Ps : Je viens de tomber sur le début de code que j'avais fais sur l'idée de makeself si cela te t'intéresse.
    Merci d'utiliser le forum pour les questions techniques.

  17. #17
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Ps : Je viens de tomber sur le début de code que j'avais fais sur l'idée de makeself si cela te t'intéresse.
    Le lien que vous m'avez donné dans le message #14 ne fonctionnant pas (erreur 501), j'ai recherché sur internet et j'ai remarqué que ce script fonctionnait sur tous les UNIX (et UNIX-Like, puisque Gnu Not Unix/Linux), et ne fonctionne donc pas sur Win$. Donc non merci.

    Pour ceux qui veulent télécharger ou voir le code source de mon projet (GNU GPL3) : http://free-apps.evoconcept.net/logi...rice/index.php

    Au revoir.

  18. #18
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 46
    Points
    46
    Par défaut
    Je rouvre le sujet.
    J'ai utilisé Gettext, car a priori, c'est pour le traducteur que gettext est nécessaire, et python-gettext est fourni avec Python ( à vérifier). Pour l'installation, je vais faire un gestionnaire de plugins et de traductions pour que l'utilisateur n'ai pas à chercher, télécharger et déplacer les fichiers.
    Mon problème, c'est que je ne parviens pas à utiliser les traduction situés dans un dossier précis (.calculatrice/locales/en_EN.mo par exemple).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import gettext
    _=gettext.gettext
    print _('Bonjour')
    gettext.bindtextdomain('en_EN','.calculatrice/locales/')
    Avec le fichier de traduction suivant :
    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
    # SOME DESCRIPTIVE TITLE.
    # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
    # This file is distributed under the same license as the PACKAGE package.
    # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
    #
    #, fuzzy
    msgid ""
    msgstr ""
    "Project-Id-Version: PACKAGE VERSION\n"
    "Report-Msgid-Bugs-To: \n"
    "POT-Creation-Date: 2010-09-17 19:57+0200\n"
    "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    "Language-Team: LANGUAGE <LL@li.org>\n"
    "Language: \n"
    "MIME-Version: 1.0\n"
    "Content-Type: text/plain; charset=UTF-8\n"
    "Content-Transfer-Encoding: 8bit\n"
     
    #: test.py:6
    msgid "Bonjour"
    msgstr "Hello"
    Merci pour votre aide.

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/01/2007, 15h27
  2. Embarquer une image dans le code
    Par hisy dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2006, 10h01
  3. Script invisible dans le code source
    Par Erika dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/10/2006, 16h32
  4. Réponses: 8
    Dernier message: 15/07/2006, 18h59
  5. Affichage de caractère spéciaux absent dans le code source
    Par HNT dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 03/11/2005, 22h38

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