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 :

Makefile pour pyuic .ui > .py


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jazz_
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 290
    Par défaut Makefile pour pyuic .ui > .py
    Bonjour,

    Je m'excuse, je ne sais pas si je poste au bon endroit, mais je recherche a faire un Makefile qui ferrais:
    pour chaque fichier .ui dans le repertoire courant.

    Merci d'avance.
    Cordialement,

  2. #2
    Membre expérimenté Avatar de ashren
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 101
    Par défaut
    Bonjour, n'ayant pas de système linux sous la main et ne créant pas souvent de Makefile, je suis allé voir ce lien http://gl.developpez.com/tutoriel/outil/makefile/.

    Je ne sais pas si ça fonctionne mais voici ce que je pense être une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    all: dep1 dep2 dep3
     
    dep1:
    	pyuic4 xxx.ui > xxx.py
     
    dep2:
    	pyuic4 xxx2.ui > xxx2.py
     
    dep3:
    	pyuic4 xxx3.ui > xxx3.py
    Pour faire en sorte de le faire de manière automatique (sans mettre chaque fichier un par un), une commande find avec un exec peut-être la solution la plus simple. Je ne peut pas tester car mon laptop linux a perdu un HDD (et mes données avec).

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    'lut,

    Pourquoi ne le fais-tu pas en python ?

  4. #4
    Membre éclairé Avatar de Jazz_
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 290
    Par défaut
    Merci de vos réponsses!

    @ashren c'est vrai que c'est une solution.

    @Vinss Je ne savait pas qu'on pouvais le faire en python, comment fait-on ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Comme ça:

    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
     
    # -*- coding: utf-8 -*-
     
    import glob
    import subprocess
     
    def get_files():
        return glob.glob('*.ui')
     
    def make_py(cmd):
        subprocess.Popen(cmd, universal_newlines=True, 
                            stdout=subprocess.PIPE).communicate()
     
    def build_command(name, exc=False):
        if exc:
            return ['pyuic4', '-x', name, '-o', name[:-2] + 'py']
        return ['pyuic4', name, '-o', name[:-2] + 'py']
     
    if __name__ == '__main__':
        files = get_files()
        for idx, f in enumerate(files):
            print 'Process file: {0} ({1}-{2})'.format(f, idx+1, len(files))
            make_py(build_command(f, True))
     
        print 'Done'
    C'est donc dans le dossier local, sinon tu modifies.

    dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    make_py(build_command(f, True))
    ,
    le 'True' sert à rajouter les lignes rendant le script exécutable, l'option '-x'.

  6. #6
    Membre éclairé Avatar de Jazz_
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 290
    Par défaut
    Merci j'ai pris une belle leçon de python aujourd'hui!

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

Discussions similaires

  1. Compiler en C à partir de windows en manuel (makefile) pour Linux
    Par _SamSoft_ dans le forum Autres éditeurs
    Réponses: 11
    Dernier message: 06/04/2007, 17h12
  2. makefile pour gtk
    Par troumad dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 28/03/2007, 08h23
  3. makefile pour des fichiers lex et yacc
    Par samarensi dans le forum Linux
    Réponses: 1
    Dernier message: 25/12/2006, 09h27
  4. makefile pour code divisé en module
    Par mencaglia dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/12/2006, 12h05
  5. Makefile pour bibliothèque graphique
    Par Hyuge dans le forum Ada
    Réponses: 3
    Dernier message: 23/10/2006, 02h12

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