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 :

Sélection de plusieurs dossiers [QtGui]


Sujet :

PyQt Python

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut Sélection de plusieurs dossiers
    Bonjour à tous,

    Dans le cadre d'un petit projet actuel, j'ai besoin de permettre à l'utilisateur de sélectionner un ou plusieurs dossiers dans l'optique de copier le contenu de chaque.

    Sélectionner un seul dossier n'est pas compliqué. Par contre je butte sur la possibilité de faire une multi-sélection.

    Quelqu'un aurait-il une petite idée?

    D'avance merci.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  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,

    En PyQt4, la fenêtre QtGui.QFileDialog.getExistingDirectory() permet la sélection multiple avec les touches 'ctrl' ou 'maj' en cliquant.

    Le résultat renvoyé donne les noms des répertoires entre guillemets, séparés par des espaces.

    Tyrtamos

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    En PyQt4, la fenêtre QtGui.QFileDialog.getExistingDirectory() permet la sélection multiple avec les touches 'ctrl' ou 'maj' en cliquant.

    Le résultat renvoyé donne les noms des répertoires entre guillemets, séparés par des espaces.

    Tyrtamos
    C'est cette fenêtre que j'utilise pour sélectionner un dossier. J'espérais que ça fonctionnerai pour une sélection multiple, mais chez moi ce n'est pas le cas.
    Je n'ai passé par contre aucune option, j'entends par là que j'appelle ma fenêtre comme suit :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dial = QtGui.QFileDialog.getExistingDirectory(self)
    print (dial)

    À noter que je teste actuellement sous win xp, python 3.2 et PyQt4.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    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
    Sous Linux je ne peux pas non plus sélectionner plusieurs dossiers.


    Platform Linux-2.6.32-32-generic-i686-with-Ubuntu-10.04-lucid
    Qt 4.6.2
    Python 2.6.5
    PyQt 4.7.2
    Sip 4.10.1

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Bon ben y a plus qu'à attendre que le Sorcier (ndlr: référence à un film, mais lequel selon vous??? ^^) nous livre son secret
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    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
    Eh, oui, j'ai répondu un peu trop tôt...

    Sous Windows, la sélection multiple se fait dans la fenêtre: chaque clic sur un répertoire avec la touche 'Ctrl' appuyée, sélectionne ce répertoire en plus des précédents. De plus, dans la ligne de saisie, le répertoire ainsi sélectionné s'ajoute aux répertoires sélectionnés avant, avec des guillemets. Mais une fois la fenêtre refermée, le résultat est: une chaine vide.

    Ce qui est dommage, c'est qu'on n'est pas loin: il suffit de taper 2 guillemets au début et à la fin de cette liste pour tout récupérer (avec un warning, puisque ce répertoire n'existe pas).

    Sous Linux, la sélection multiple ne se fait pas (j'ai essayé sous Ubuntu).

    Voilà mon petit code de test:

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import sys, os
    from PyQt4 import QtCore, QtGui
     
    ####################################################class Fenetre(QtGui.QWidget):
     
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
     
            repert = unicode(QtGui.QFileDialog.getExistingDirectory(self, 
                            u"Sélectionnez le répertoire")
                            )
     
            QtGui.QMessageBox.information(None, 
                        u"Répertoire(s) sélectionné(s)",
                        repert)
     
    ####################################################app = QtGui.QApplication(sys.argv)
    fen = Fenetre()
    fen.show()
    sys.exit(app.exec_())
    Je pense que sous Windows, Qt4 utilise la fenêtre de dialogue de l'OS Windows, mais sans en coder toutes les possibilités (de sélections multiples en particulier). C'est ce qui m'a trompé.

    Et, au final, je n'ai pas trouvé d'astuce (options, filtre, etc...) pour faire accepter la sélection multiple de répertoires.

    Tyrtamos

  7. #7
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Bon ben soit je loupe un truc, soit il se passe quelque chose chez toi et pas chez moi.
    J'ai essayé ton code et plein d'autres trucs, mais rien à faire... impossible de sélectionner plusieurs répertoires...
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  8. #8
    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 Jiyuu,

    Comme j'ai dit dans mon message précédent: la sélection multiple de répertoires fonctionne sous Windows tant qu'on est dans la fenêtre QFileDialog, mais dès qu'on quitte cette fenêtre, le résultat obtenu est une chaine vide: on ne peut donc pas récupérer cette sélection multiple.

    Et comme je le supposais, sous Windows, Qt utilise par défaut le QFileDialog "natif" de l'OS, et c'est pour ça qu'il y a une différence entre Windows et Linux. On devrait d'ailleurs pouvoir empêcher QT de faire ça sous Windows avec l'option "DontUseNativeDialog", mais ça semble nécessiter de bricoler en C++...

    J'ai vu une trentaine de pages web sur cette question et je n'ai trouvé aucune solution. Certains suggèrent d'utiliser plutôt getOpenFileNames avec différentes options permettant la sélection de répertoires (et pas seulement des fichiers), mais je n'ai pas réussi.

    J'ai même vu dans une mailing list une réponse qui jetait un doute sur l’intérêt de la sélection multiple de répertoires (dans le cadre: "dites-moi de quoi vous avez besoin, je vais vous apprendre à vous en passer" ) )

    En résumé: ça ne marche pas.

    Tyrtamos

  9. #9
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Re,

    Désolé, j'avais pas compris que tu parlais de la fenêtre QFileDialog. Là je suis d'accord avec toi.

    Comme ça ne marche pas on va donc contourner le problème... le but recherché est de sélectionner plusieurs répertoires, de les copier-coller ainsi que leurs contenus dans un dossier temp puis de créer une archive.

    Pour le moment je vois trois solutions pour faire ça :
    • Créer moi même une fenêtre QDirDialog ^^ ;
    • Utiliser un QTableView et ajouter dans mon programme un bouton "Ajouter un autre fichier ;
    • Demander à l'utilisateur de veiller à mettre tous les répertoires voulus dans un seul répertoire avant l'archivage.


    Si quelqu'un à une autre idée, qu'il hésite pas ^^

    Jiyuu
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  10. #10
    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
    Et avec un QTreeView ou QTreeWidget, tu devrais pouvoir y arriver.

    C'est évidement moins intuitif pour l'utilisateur qui s'attend à trouver une boite de dialogue d'ouverture de fichier de se découvrir une arborescence, mais si tu organise bien ton IHM ça peut passer.

    Avec le drag-and-drop en plus.

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

Discussions similaires

  1. Sélection de plusieurs dossiers dans Explorer
    Par Vincinho dans le forum VB.NET
    Réponses: 0
    Dernier message: 23/04/2010, 12h19
  2. [EXCEL] sélection de plusieurs feuilles par code
    Par CCRNP dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/03/2006, 18h48
  3. Sélection sur plusieurs tables
    Par WriteLN dans le forum Requêtes
    Réponses: 19
    Dernier message: 05/10/2005, 15h29
  4. Sélection de plusieurs éléments
    Par ti-ben dans le forum Langage
    Réponses: 8
    Dernier message: 04/09/2005, 11h54
  5. [SQL] Sélection ds plusieurs table
    Par lord_paco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2003, 17h53

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