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 :

Travailler directement avec un fichier ui


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut Travailler directement avec un fichier ui
    Bonsoir,

    Il y a quelques temps je pensais que qt5 permettait de charger directement les fichiers ui produit par qtdesigner mais il ne semblait que non...

    Mais après quelques recherches, il s’avère que c'est bien possible depuis qt et pyqt > 4.4.


    Pour cela c'est assez simple :
    1) Importer la fonction uic depuis le module PyQt4
    2) Indiquer l'emplacement du fichier ui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file = "/home/hizoka/ui_Test.ui"
    3) Charger le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    widgets = uic.loadUi(file)
    4) Afficher le tout
    Apres quelques tests rapides :
    - Les icônes systèmes n’apparaissent pas.

    - Le contenu du fichier ressource fonctionne mais il faut charger le fichier dans le script python (ce qui était inutile car la conversion ui => py s'en chargeait).

    - Les connexions internes fait par qtdesigner fonctionnent.

    - Les connexions internes au fichier py fonctionne aussi.

    ex :
    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
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import os, sys
    from PyQt4 import uic
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *
     
    import fichiers_rc
     
    def AboutQt():
        """Fonction affichant la fenêtre à propos de Qt."""
        QMessageBox.aboutQt(widgets)
     
     
    if __name__ == '__main__':
     
        app = QApplication(sys.argv)
     
        file = "/home/hizoka/ui_Test.ui"
     
        widgets = uic.loadUi(file)
        widgets.show()
     
        widgets.about_qt_open.activated.connect(AboutQt)
     
        app.exec_()
    Cela nécessite de pousser un peu le fonctionnement mais c'est franchement sympa non ?


    Donnez moi votre avis sur la chose :
    est-ce plus simple ?
    est-ce limitant ?
    ... ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par hizoka Voir le message
    Donnez moi votre avis sur la chose :
    est-ce plus simple ?
    est-ce limitant ?
    ... ?
    Bah... si certains se sont donnes la peine de faire des tutos sur qt-designer.... c'est que ce n'est pas si mal.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Je ne parle pas de qtdesigner qui est vraiment très pratique

    Mais du fait de se passer de pyuic4 qui convertit les fichier ui (de qtdesigner) en fichier py.

  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,

    C'est toujours intéressant de découvrir d'autres méthodes, mais je n'adhère pas.

    Pour chaque page dessinée avec qtdesigner, j'ai un fichier batch qui contient pyuic4 avec les bon arguments. Après chaque modif de qtdesigner, je fais un double clic sur le fichier batch et hop: j'ai le fichier .py dispo en moins d'1/2 seconde, et prêt à être importé. C'est tellement facile et rapide que je ne cherche rien d'autre.

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Il est vrai que le système utilisé en convertissant le ui fonctionne très bien :p

    Je n'ai pas encore eu le temps de tester si la traduction fonctionne surtout !
    Et si elle fonctionne, la traduction dynamique fonctionne-t-elle ?! (ca me parait peut probable...)

    EDIT : La traduction ne fonctionne que pour qt pas pour le logiciel.

    De ce fait je continuerai donc la méthode actuelle.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par hizoka Voir le message
    Mais du fait de se passer de pyuic4 qui convertit les fichier ui (de qtdesigner) en fichier py.
    Hu?!? C'est bien pour les cas "simples".

    uic.loadUi(file) crée une instance disons dynamique.
    Si on veut une classe (hériter de...), il faudra probablement hacker du cote metaclass. Pas dit que plusieurs uic.loadUi(file) produisent des instances de la même classes (ca fait pas vraiement un import).

    Si on complique, on doit "composer" les widgets.
    le retour de uic.loadUi(file) sera dans une variable d'instance (et il ne faut pas oublier "self") et préfixer tous les appels de méthodes par le nom de cette variable.

    En générant un fichier, on a un module Python avec une class dedans, sa mise en œuvre sera plus simple - on reste dans le "statique" -.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 197
    Par défaut
    Je dévie peut être un peu du sujet...
    ça fait un petit temps que j'ai pas utilisé le designer... le soft m'avait permis de me faire la main pour avoir un aperçu d' éventuelles interfaces.
    J'aime coder mes propres fenêtres/widgets sans avoir le "surplus" de code du designer.
    Y voyait vous des avantages à utiliser le designer? productif?
    Si oui éventuellement je m'y intéresserais d'avantage.

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    wiztricks => Merci pour ces infos.

    Nico_tournai => Perso je trouve que c'est plus que pratique pour les interfaces assez lourdes. Bien plus facile à gérer (facile de remodifier tout un tas de widget d'un coup).
    Apres qtdesigner ne propose pas toutes les actions possibles (ex il ne propose pas d'actiongroup, ne propose pas différents flags...).

    Apres ce n'est que l'avis d'un débutant...

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

    Citation Envoyé par Nico_tournai Voir le message
    Y voyait vous des avantages à utiliser le designer? productif?
    Si oui éventuellement je m'y intéresserais d'avantage.
    Pour les fenêtres simples, je les code directement, mais j'ai aussi des fenêtres complexes avec une vingtaine de widgets et des précisions élevées de positionnement pour lesquelles je ne vois pas comment je pourrais faire sans qtdesigner. Pour ces cas-là, j'ai même "customisé" des widgets pour que qtdesigner puisse travailler avec.

    J'ajoute que la présence de qtdesigner a fait partie des raisons pour lesquelles j'ai choisi PyQt4.

Discussions similaires

  1. Travailler avec un fichier XML de grande taille
    Par Jayme65 dans le forum Flash
    Réponses: 9
    Dernier message: 29/05/2006, 17h09
  2. Remplir directement un record avec un fichier ASCII
    Par cfalcot dans le forum Langage
    Réponses: 9
    Dernier message: 11/05/2006, 10h01
  3. [linux][gcc] Comment travaille t-on avec plusieurs fichiers?
    Par kaygee dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/04/2004, 17h48

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