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 :

Creation d'une flèche déroulant un menu dans QtDesigner


Sujet :

PyQt Python

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut Creation d'une flèche déroulant un menu dans QtDesigner
    Bonjour,

    Je me présente : je m'appelle Olivier aka Cenwen et je fais partie d'un projet international Open Source sous Linux dans le domaine de l' Edition Vidéo. Je précise qu'à la base je ne suis pas un développeur mais un utilisateur qui s'est investit corps et âme dans ce projet qui me tiens à cœur

    Jusqu'à présent, nous développions notre projet en Python2.7.x en créant nos interfaces graphiques (GUI) en GTK2 utilisant Glade3. Suite à la création de notre propre framework vidéo et à un problème avec GTKWebkit pour notre timeline (alors que Webkit fonctionne parfaitement), et en accord avec nos plans/ vision nous passons notre projet à QT 5 et Python 3. Cela nous permettra d'avoir un logiciel multi-plateforme notamment.

    Parmi les taches qui me sont assignées, je bute sur une. Je dois recréer une GUI qui dispose d'une flèche qui, une fois cliquée, permet d'afficher/dérouler la suite. En l’occurrence ici, il s'agit de texte. Je joins un exemple de ce que je veux faire (même si ce n'est pas ce que je dois faire)



    Un petit mot d'explication sur les deux chiffres qui apparaissent.
    Le 1 est tel qu'il apparaîtra, le 2 est ce que l'on peut obtenir une fois déroulé. Comme je le disais auparavant, il s'agit d'une exemple puisqu'en ce qui me concerne, ce sera du texte.

    Or, je ne comprends pas comment réaliser cette tâche.
    Est-ce que quelqu'un peut m'aider. Par avance Merci.

    Petite précision (si cela a son importance ? ), je tourne sous Manjaro (dérivé d'Archlinux) et Linux Mint Olivia (dérivé d'Ubuntu) et Ubuntu aussi (mais de moins en moins). Mais Manjaro est mon système principal.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    Bonjour

    Je ne vois pas quel widget qt correspond à ce que tu veux faire.
    Je pense que tu devras créer ton propre widget.
    un widget comprenant un bouton (haut) et en dessous un contenant.
    En cliquant sur le bouton, faire apparaitre ou masquer le widget contenant (avec setVisible() ou hide() ou je sais plus lol...).

    Peut être il y a mieux.

    Bonne chance

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 479
    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 479
    Points : 9 278
    Points
    9 278
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste une piste.

    Je ne connais pas de widget tout fait capable de faire ça.

    Il me semble qu'on peut créer un panneau (frame) comportant tout (y compris les combobox). Mais en jouant sur la hauteur, on n'affiche que la 1ère ligne de texte précédé par l'image flèche à droite.

    Quand on clique sur la 1ère ligne, on fait apparaître le panneau complet (en repoussant d'autant ce qui suit) et on met à jour l’icône flèche.

    Quand on clique de nouveau sur la 1ère ligne, on fait l'inverse: on ne voit plus que la 1ère ligne avec l'icône flèche à droite.

    Une autre piste possible: l'utilisation d'un widget de lecture d'un arbre (type QTreeWidget).

  4. #4
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Appelons cela une toolBox dépliable.

    Qui n'existe effectivement pas dans les widgets de Qt.

    J'en ai créé pour mon propre usage, le code est sur Launchpad [1], ce qui t'intéresse principalement est le vtoolheader.py

    C'est avec PyQt4 mais convertible très aisément pour PyQt5 [2]

    Il y a une doc (même dossier), il suffit d'ouvrir le fichier index.html dans ton navigateur.

    [1] http://bazaar.launchpad.net/~vincent...-1.0/VWidgets/
    [2] http://www.oqapy.eu/releases/pyqt4topyqt5.tar.gz




    Puisque c'est dimanche, je rajoute une capture.


  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    @Nico_tournai

    Merci pour ta réponse même si elle ne convient pas à ce que cherche à faire.

    @tyrtamos

    Intéressante piste que j'explorerais plus tard, la solution de VinsS me parait être celle qui se rapproche le plus de ce que je veux obtenir comme résultat. Je précise d'ailleurs que ce n'est pas forcément une flèche que je veux, une croix peut très bien faire l'affaire.

    @Vincent

    Je suis d'accord sur le fait d’appeler cela une toolbox dépliable.

    C'est exactement le résultat que je veux obtenir.

    Je télécharge ton code créer pour Oqapy, ta belle visionneuse, qui ne se................lance pas sous Manjaro mais bien sous Mint Olivia. Et je regarde cela demain dès que j'ai un moment.

    D'ailleurs, du temps que j'y pense ton application pour Arte Qarte) est superbe. J'adore tes Vignettes, si on pouvait avoir les même, ce serait classe. Un peu de fleur ne fait jamais de mal.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    J'ai suivi les instructions (d'ailleurs sur Manjaro il s'agit du dossier site-packages pour python3.3) d'installation sans problème.

    J'ai voulu tester sur une QDialog (un test en grandeur nature ) et je m'attendais à avoir des widgets en plus à gauche et il en est rien. Est-ce que j'ai raté quelque chose ? A moins que je m'y prenne mal ? C'est aussi fort possible.

    Sinon c'est du très beau boulot.

  7. #7
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Comment ça des widgets à gauche ? à gauche de quoi ?

    Montre un exemple de code, sera plus simple.

  8. #8
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Un exemple basique:
    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
     
    # -*- coding: utf-8 -*-
    import sys
     
    from PyQt4 import QtCore, QtGui
     
    from VWidgets.vtoolheader import VToolHeader
     
    class ToolBox(QtGui.QWidget):
        def __init__(self):
            super(ToolBox, self).__init__()
            layout = QtGui.QVBoxLayout()
            layout.setMargin(0)
            self.header = VToolHeader(self)
            self.header.setTitle('Tool header')
            layout.addWidget(self.header)
            self.tools = QtGui.QWidget(self)
            layout2 = QtGui.QHBoxLayout(self.tools)
            layout2.setMargin(4)
            self.label = QtGui.QLabel('File name:', self)
            layout2.addWidget(self.label)
            self.lineedit = QtGui.QLineEdit(self)
            layout2.addWidget(self.lineedit)
            layout.addWidget(self.tools)
            self.setLayout(layout)
     
            self.header.expandRequest.connect(self.expand_toolbox)
     
        def expand_toolbox(self, b):
            self.tools.setVisible(b)
     
    if __name__ == '__main__':
        app = QtGui.QApplication([])
        ui = ToolBox()
        ui.show()
        sys.exit(app.exec_())

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Comment ça des widgets à gauche ? à gauche de quoi ?

    Montre un exemple de code, sera plus simple.
    Dans Qt Designer, tu as dans la colonne de gauche une liste des principaux widgets disponibles. C'est dans cette fameuse liste que je ne trouvais pas la fameuse fleche extensible dont je parlais dans le 1er post de ce thread et que ton superbe travail (pas mal Sphinx comme support de doc, c'est multiplateforme ? ) permet de faire.

    Au début, j'ai cru que je m'étais trompé, cela était possible. J'ai placé les dits fichiers/dossiers dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/lib/qt4/plugins/designer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/lib/python3.3/site-package
    NB : Sous Mint Olivia c'est bien dist-packages comme tous les dérivés de Débian par contre je n'ai pas trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/lib/qt4/plugins/designer
    ni d'équivalent.

    Après avoir rafraîchi la liste des plugins, je les ai eu dans Qt Designer4 comme tu peux le voir sur la 1ere screenshot tandis que je n'ai rien pour Qt Designer5. Bien entendu, j'ai copié les même fichiers dans son équivalent qt cad

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/lib/qt/plugins/designer
    Avec Qt Designer4


    Et avec Qt Designer5


    Le fichier que tu as envoyé fonctionne bien. Et cela a l'air de fonctionner sur Qt Designer4 mais pas sur Qt Designer 5.

    N'y a-t-il pas un autre moyen d'ajouter des plugins (graphiquement) ? A moins que je ne sois pas dans le bon dossier ?

  10. #10
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Et bien en fait je ne les avais pas encore testé avec le designer de Qt5.

    Ce qui m'a permis de constater ce matin que PyQt5 n'avais pas été compilé avec le support de QtDesigner.

    Les distributions Debian & friends délivrent, pour le moment Qt5 en pièces détachées et il fallait installer qttools5-dev pour le designer.

    Une install et une recompilation de PyQt5 plus tard, j'ai installé mes widgets comme ceci:

    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
    /usr/lib/x86_64-linux_gnu/qt5/plugins/designer/python/vcolorcomboboxplugin.py
                                                          vlineeditplugin.py
                                                          vtoolheaderplugin.py
                                                          vtoolpaneplugin.py
                                                          VWidgets_qt5/__init__.py
                                                                     colorsdata.py
                                                                     vcolorcombobox.py
                                                                     vlineedit.py
                                                                     vtoolheader.py
                                                                     vtoolpanel.py
    
    /usr/lib/python3.2/dist-packages/VWidgets_qt5/__init__.py
                                                   colorsdata.py
                                                   vcolorcombobox.py
                                                   vlineedit.py
                                                   vtoolheader.py
                                                   vtoolpanel.py
    Les dossiers en caractères gras sont à créer.

    J'ai été obligé de renommer le dossier VWidgets_qt5 pour ne pas écraser la version Qt4

    À noter que PyQt a installé QtDesigner.so dans /python3.2/site-packages/PyQt5 ce qui plantait l'import des plugins. J'ai mis une copie dans /usr/lib/python3/dist-packages/PyQt5/ et tout est rentré dans l'ordre.

    Pour la facilité, j'ai mis une archive VWidgets (Qt4) et une VWidgets_qt5 sur le site d'Oqapy

    Qt4 (celui-ci contient la doc)
    http://www.oqapy.eu/releases/VWidgets.tar.gz
    Qt5
    http://www.oqapy.eu/releases/VWidgets_qt5.tar.gz

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Et bien en fait je ne les avais pas encore testé avec le designer de Qt5.
    Cela ne me pose aucun problème de servir de béta testeur.

    Je récupére les archives maintenant et j'y regarde demain. Et bien entendu, je te tiens au courant. En tout cas, merci de ton aide.

    Un petit mot de plus pour VWidget Qt4 : Tu l'as modifié, veux tu que je le teste aussi sur QT Designer4 ? l'ancien semblait fonctionné................

  12. #12
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Ce que j'ai modifié c'est le vtoolpanel, mais celui-là est encore en travail, c'est pour cela qu'il n'est pas documenté et qu'il n'y a pas d'unittest.

    Pour Qt4, chez moi tout fonctionne sans problème. Merci.

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Je viens de tester avec tes nouvelles instructions et c'est toujours pareil.
    Cela fonctionne sans aucun probleme avec Qt Designer4 mais pas avec Qt Designer5.

    Je constate que les plugins ne sont pas présents dans Qt Designer5 après avoir redemandé un rafraichissement
    Par contre deux remarques :
    - Dans les 2 environnements de dev de Qt Designer, les plugins n'apparaissent pas par défaut cependant une fois demandé un rafraichissement dans le 1er ils apparaissent bien.
    - Je n'ai pas installe qttools : une incidence ? car normalement je dispose déjà de PyQt5 fonctionnel.

    Pour que ce soit plus parlant je te joins les screenshots correspondantes :




  14. #14
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Ils devraient apparaître avec libpyqt5.so.

    Chez moi (Ubuntu 12.04) c'est là:
    /usr/lib/x86_64-linux-gnu/qt5/plugins/designer/python/ les 4 plugins
    /usr/lib/x86_64-linux-gnu/qt5/plugins/designer/python/VWidget_qt5/ les 4 widgets + colorsdata.py

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Ils devraient apparaître avec libpyqt5.so.
    C'est effectivement ce que je pense aussi.

    Hum, je vais tester 2 choses demain matin.

    - installer qttools-git en ce qui me concerne sur ma manjaro
    - voir si je peux faire de même sur ma Mint Olivia.

    Je sens que cela ne vas pas être évident. Ce serait trop beau.

    J'ai commencé à tester à la main quelques trucs et je teste aussi avec Qt Designer4 en attendant. Tes plugins vont sauver/aider pas mal de gens.

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    La compilation d'une des dépendances de qttools-git a échouée.

    Je testerai sur Mint dès que j'ai un moment.

  17. #17
    Membre confirmé
    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
    Points : 460
    Points
    460
    Par défaut
    J'ai testé sous qt4 nicel.

    Par contre sous qt5 j'ai essayé d'installer dans le dossier que m'a créé le run de qt5 (il semble avoir tout deziper) et rien non plus, pas de widget.

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Par contre sous qt5 j'ai essayé d'installer dans le dossier que m'a créé le run de qt5 (il semble avoir tout deziper) et rien non plus, pas de widget.
    Je confirme cela fonctionne sous QT4.
    Précision utile=> cela ne vient pas de moi.

    Tu es sous quelle distribution ? Ubuntu ?

  19. #19
    Membre confirmé
    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
    Points : 460
    Points
    460
    Par défaut
    kubuntu 13.10 64bits

    Mais je n'ai pas compiler qt5.
    Et je n'arrive pas à lancer mes logciels en qt5 alors je ne suis pas forcement un bon retour :p
    mais qt5-designer lui fonctionne bien

  20. #20
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 89
    Points : 91
    Points
    91
    Par défaut
    Sauf erreur de ma part et si mes souvenirs sont bons, qt5Designer (et ses comparses) vient avec QT5.
    Mais comme toi, je ne suis pas de bon retour car je suis autant débutant que toi, quoique à l'allure que tu vas, tu m'as déjà dépassé.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2013, 09h39
  2. Réponses: 1
    Dernier message: 15/05/2013, 15h03
  3. Réponses: 2
    Dernier message: 11/05/2013, 12h19
  4. Réponses: 1
    Dernier message: 02/05/2013, 20h19
  5. [AC-2007] Créer une liste déroulante non modifiable dans un ruban
    Par LaryAndrew dans le forum IHM
    Réponses: 5
    Dernier message: 03/04/2012, 21h16

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