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 :

Executable et images d'une interface pyqt


Sujet :

Déploiement/Installation Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Executable et images d'une interface pyqt
    Bonjour à tous,

    J'ai créé un petit outil logiciel avec une interface développée grâce à pyqt5.
    Je compile le projet en exécutable grâce à pyinstaller (procédure ici : https://github.com/mherrmann/fbs-tut...dows-installer) et cela fonctionne très bien.

    J'aimerais maintenant insérer des images (logos des partenaires du projet) à l'interface. J'imagine que je dois les joindre au .exe et qu'elles se copieront dans un dossier sur l'ordinateur de l'utilisateur, et que le code pourra les appeler ensuite pour s'afficher dans l'interface.
    Bon, ça, c'est pour la théorie. Seulement, je ne sais pas du tout comment faire ça. J'ai cherché un peu en ligne et j'ai trouvé quelques pistes avec py2exe, mais pas avec pyinstaller. Et même sans cela, ces pistes m'apparaissent assez abstraites pour le moment (je précise que je suis relativement débutant en python).

    Auriez-vous un lien vers un bout de code qui me permettrait de faire cela, ou une idée à me suggérer pour le faire ?

    Merci d'avance

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour

    Tu parles de "pyinstaller", mais il n'est pas mentionné sur ton lien. Je ne peux que de te parler de pyinstaller, que j'utilise aussi (y compris avec PyQt5)..

    Pour résoudre le problème que tu poses, voilà comment je fais.

    - il vaut mieux utiliser l'option "--onedir" que l'option "--onefile". On se retrouve ainsi avec un répertoire qui contient l'exécutable et tout ce qu'il lui faut pour fonctionner correctement (l'interpréteur et les bibliothèques). Rien ne s'oppose à la présence de fichiers de données supplémentaires, par exemple un sous-répertoire "logos".

    - Au traitement par pyinstaller, tu peux utiliser l'option "--add-data" pour transporter un fichier ou un répertoire de la source à la destination. Par exemple, avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --add-data ".\icone.png;."
    l'icone se retrouvera au même niveau que le futur exécutable (.exe sous Windows)
    et avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --add-data "E:\Programmes\Python37\Lib\site-packages\PyQt5\Qt\translations;PyQt5\Qt\translations"
    Le répertoire des fichiers de traduction de PyQt5 sera aussi automatiquement transporté
    Pour la syntaxe: le chemin source et le chemin destination sont séparés par ";".

    - un problème qu'il faut souvent traiter: les adresses pour trouver les fichiers de données changent entre la version ".py" et la version ".exe".
    Pour trouver la nouvelle adresse, on fait comme ça (c'est dans la doc!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        # Répertoire d'exécution avec ou sans pyinstaller (onedir ou onefile)
        if getattr(sys, 'frozen', False):
            REPEXE = sys._MEIPASS # programme traité par pyinstaller
        else:
            REPEXE = os.path.dirname(os.path.abspath(__file__)) # prog. normal .py
    On peut ainsi copier les fichiers de données à la main ou avec "--add-data", et le code du programme saura y accéder dans tous les cas grâce au REPEXE calculé au lancement du programme.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Ce n'est effectivement pas pyinstaller que j'utilise mais fbs installer...
    Quoiqu'il en soit, ta réponse devrait m'aider !

    Je vais donc continuer de chercher de mon côté et je reviendrai ici compléter la réponse si j'avance.

    A bientôt

Discussions similaires

  1. Insérer une image sur une interface Tcl/Tk
    Par habasque dans le forum R
    Réponses: 1
    Dernier message: 28/09/2011, 14h13
  2. [Débutant] insérer une image dans une interface
    Par Imène_23 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 07/06/2009, 14h01
  3. [Débutant] comment afficher plusieurs images dans une interface
    Par zakary dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 02/05/2009, 10h47
  4. image dans une interface graphique
    Par merdassiahmad dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/04/2008, 11h04
  5. [wxGlade] ajouter une image dans une interface
    Par moon93 dans le forum wxPython
    Réponses: 2
    Dernier message: 12/06/2007, 13h49

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