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

PyQt Python Discussion :

problème d'icones après utilisation de cx_freeze


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 31
    Par défaut problème d'icones après utilisation de cx_freeze
    Bonjour,

    j'ai réalisé un programme qui effectue une certaine tâche. Je souhaite le rendre sous forme exécutable. Mon problème est avec les icônes :

    J'ai rajouté les icônes au moment du design de l'interface sur QtDesigner et je les ai tous placé dans le dossier icons :

    Nom : cont.PNG
Affichages : 363
Taille : 6,3 Ko

    le fichier geo.py est le rendu de QtDesigner et Bug_Resolver contient des fonctions que j'utilise. J'importe ce dernier dans geocorrect.py qui constitue le fichier .py principal.

    mon problème est que je ne trouve pas les icônes dans mon fichier exécutable bien que j'ai essayé à maintes reprise. l'application marche bien , mais aucune des icônes que j'ai choisi au moment du codage n'existe.

    j'ai essayé de rajouter une variable icone = "geo.png" dans la cible_1 , mais j'obtiens une erreur durant le traitement via cmd

    Voici mon fichier setup.py :

    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
    55
    56
    57
    58
    59
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    import sys, os
    from cx_Freeze import setup, Executable
     
    path = sys.path
     
     
    includes = []  
    excludes = []
    packages = [] 
     
     
    includefiles = [("icons/geo.png","geo.png"),("icons/about.png","about.png"),
                    ("icons/cond.png","cond.png"),("icons/new.png","new.png"),
                    ("icons/quit.png","quit.png"),("icons/warning.png","warning.png")]
     
    optimize = 0
     
     
    silent = True
     
    options = {"path": path,
               "includes": includes,
               "excludes": excludes,
               "packages": packages,
               "include_files": includefiles,
               "create_shared_zip": False, 
               "include_in_shared_zip": False, 
               "compressed": False,  
               "optimize": optimize,
               "silent": silent
               }
     
    base = None
    if sys.platform == "win32":
        base = "Win32GUI" 
     
     
     
    cible_1 = Executable(
        script="geocorrect.py",
        base=base,
        compress=False,  # <= ne pas generer de fichier zip
        copyDependentFiles=True,
        appendScriptToExe=True,
        appendScriptToLibrary=False,  # <= ne pas generer de fichier zip
        )
     
    setup(
        name="GéoCorrector",
        version="1.0",
        description="Corrige un bug dans la géobase d'une station totale",
        author="Me",
        options={"build_exe": options},
        executables=[cible_1]
        )

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Une suggestion:

    Dans le code donné, les icônes ne se trouvent pas au même endroit dans la version ".py" et dans la version ".exe": à mon avis, ce n'est pas une bonne idée.

    il vaudrait mieux recopier le répertoire icons et son contenu (et donner la bonne adresse dans QtDesigner), ce qui se fait avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    includefiles = ["icons"]
    On pourrait aussi avoir les icônes au même niveau que le programme ".py" (donc sans le répertoire "icons"), et les recopier pendant le traitement par cx_freeze avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    includefiles = ["geo.png", "cond.png", "quit.png"]
    Dans les 2 cas, ça aurait l'avantage d'avoir les icônes au même endroit avec la version ".py" et la version ".exe".

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 31
    Par défaut
    Bonjour ,

    Merci bien tyrtamos , toujours à la rescousse comme d'habitude

    j'ai utilisé la première option : includefiles = ["icons"] , ça a bien marché quand je rentre dans l'application , mais le fichier exe windows en soit n'a pas d'icône .

    comment faire pour la mettre ? , sachant qu'à chaque fois je rajoute icon = "geo.png" dans la cible , python crash lors de l'execution cmd.

    Cordialement,

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ça, c'est différent: je n'avais pas compris que tu cherchais l'icône de l'exe sous Windows. Il est différent de celui qui est manipulé par PyQt pour se trouver en haut des fenêtres.

    Cet icône doit être (probablement) en format ".ico", et il est mis dans l'exe pendant le traitement par cx_freeze: il n'a donc pas besoin d'être recopié dans le répertoire de l'exe!

    Voilà les changements à faire dans ton code, en considérant par exemple que tu as une icône appelée "icone.ico" destiné à l'exe:

    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
    icone = None
    if sys.platform == "win32":
        icone = "icone.ico"
     
    ...
     
    setup(
        name="GéoCorrector",
        version="1.0",
        description="Corrige un bug dans la géobase d'une station totale",
        author="Me",
        options={"build_exe": options},
        executables=[cible_1],
        icon=icone
        )
    Pour convertir une icone .png en .ico: gimp (gratuit) fait ça très bien.

    A noter que j'avais essayé de mettre aussi une icône à l'exécutable sous Linux, et que ça a moins bien marché (l’icône est resté en noir et blanc). Mais il y a longtemps et peut-être cela a-t-il été corrigé depuis?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 31
    Par défaut
    Merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [dll] libérer une dll apres utilisation
    Par polo54 dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 11/07/2009, 22h48
  2. problème de update après l'utilisation d'un lov
    Par scofild20 dans le forum Forms
    Réponses: 3
    Dernier message: 07/09/2008, 18h23
  3. problème d'icone
    Par Philippe299 dans le forum MFC
    Réponses: 1
    Dernier message: 09/09/2005, 20h48
  4. [FB] installation et apres? utilisation ???
    Par vad dans le forum Débuter
    Réponses: 7
    Dernier message: 17/02/2005, 09h55
  5. Problèmes d'espaces après requete SQL
    Par innosang dans le forum Bases de données
    Réponses: 7
    Dernier message: 29/04/2004, 16h47

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