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 :

Afficher le nom d'un fichier selectionne avec QFileDialog


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut Afficher le nom d'un fichier selectionne avec QFileDialog
    Bonjour,

    je suis en train de realiser une interface graphique et en cliquant sur un bouton je souhaite selectionner un fichier et afficher son nom dans une QListWidget:
    Pour cela j'ai utilise la fonction QFileDialog:selectedNameFilter() qui est cense me renvoyer le nom du fichier selectionne:
    Mais il ne me renvoit que "All files(*)" a chque fois:

    Voici ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def addtest(self):
         file_name = QtGui.QFileDialog.getOpenFileName(self, path)
         file_txt = open(file_name, 'r')
     
         fd =QtGui.QFileDialog(self)
         item = fd.selectedNameFilter()
         self.ui.listWidget.additem(item)
         self.ui.listWidget.show()
     
         file_txt.close()
    Sauriez vous comment proceder?

    Merci d'avance pour votre aide.

  2. #2
    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
    Salut,

    Essaye plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            fdial = QtGui.QFileDialog(None, u"Selectionner un fichier")
            fdial.setFileMode(QtGui.QFileDialog.AnyFile)
            item = unicode(fdial.exec_())
    Il s'agit de PyQt4

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    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 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Salut,

    Relisez votre code: ligne 2, QtGui.QFileDialog.getOpenFileName doit déjà retourner un nom de fichier.
    Ligne 4, vous créez un nouveau QtGui.QFileDialog - que vous oubliez de lancer .exec_() - pour y récupérer la valeur de .selectedNameFilter() plutôt que ce que retournera .selectedFiles() (après l'.exec_()).

    - W

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Essaye plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            fdial = QtGui.QFileDialog(None, u"Selectionner un fichier")
            fdial.setFileMode(QtGui.QFileDialog.AnyFile)
            item = unicode(fdial.exec_())
    Il s'agit de PyQt4
    Tout d'abord merci pour la reponse:
    Je viens d'essayer cette methode mais je ne parvient toujours pas a retourner le nom du fichier qui a ete selectionne car item renvoit "1"

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Relisez votre code: ligne 2, QtGui.QFileDialog.getOpenFileName doit déjà retourner un nom de fichier.
    Ligne 4, vous créez un nouveau QtGui.QFileDialog - que vous oubliez de lancer .exec_() - pour y récupérer la valeur de .selectedNameFilter() plutôt que ce que retournera .selectedFiles() (après l'.exec_()).

    - W
    La ligne 2 me renvoit l'adresse du fichier mais non son nom.
    Et pour la suite, je n'ai pas tres bien compris comment recuperer la valeur de selectedNameFilter().
    J'ai ajoute fd.exec_ entre les lignes 5 et 6 mais je ne voit pas a quel momemnt je peux recuperer sa valeur:
    Merci pour votre aide

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    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 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Citation Envoyé par laoren Voir le message
    La ligne 2 me renvoit l'adresse du fichier mais non son nom.
    Qu'est ce que vous appelez "adresse du fichier"? Son nom complet?
    Il est valide puisque la ligne suivante ("open") trouve le fichier.

    Citation Envoyé par laoren Voir le message
    Et pour la suite, je n'ai pas tres bien compris comment recuperer la valeur de selectedNameFilter().
    J'ai ajoute fd.exec_ entre les lignes 5 et 6 mais je ne voit pas a quel momemnt je peux recuperer sa valeur:
    Vous avez bien compris comment récupérer selectedNameFilter(), çà vous retourne "All files(*)". Mais ce n'est pas ce que vous voulez.
    fd.exec_ ne laissera s'exécuter l'instruction suivante qu'après la fermeture du dialogue. C'est à ce moment qu'il faudra récupérer .selectedFiles(). Mais ce sera encore un nom complet...
    Autant utiliser celui que vous avez déjà en n'y gardant que le nom du fichier (si c'est ce que vous voulez mais ce que vous racontez est aussi embrouillé que le code que vous écrivez).

    - W

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Si mon code et mes explications sont embrouilles, vous n'imaginerez meme pas l'etat de mon cerveau

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Qu'est ce que vous appelez "adresse du fichier"? Son nom complet?
    Il est valide puisque la ligne suivante ("open") trouve le fichier.
    Ah, j'ai bien compris: Je pense que la fonction utilisee n'est pas adaptee alors car je veux simplement ouvrir un dossier qui contient plusieurs fichiers que l'utilisateur peut selectionner.

    Citation Envoyé par wiztricks Voir le message
    Vous avez bien compris comment récupérer selectedNameFilter(), çà vous retourne "All files(*)". Mais ce n'est pas ce que vous voulez.
    fd.exec_ ne laissera s'exécuter l'instruction suivante qu'après la fermeture du dialogue. C'est à ce moment qu'il faudra récupérer .selectedFiles(). Mais ce sera encore un nom complet...
    Autant utiliser celui que vous avez déjà en n'y gardant que le nom du fichier (si c'est ce que vous voulez mais ce que vous racontez est aussi embrouillé que le code que vous écrivez).

    - W
    Par exemple, mon fichier s'appelle "test.py", j'aimerais afficher "test" dans le Widget

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    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 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Salut,

    Citation Envoyé par laoren Voir le message
    Par exemple, mon fichier s'appelle "test.py", j'aimerais afficher "test" dans le Widget
    Bricoler avec les chaînes de caractères est ce qu'on apprend normalement dans les tutos. bien avant de se lancer dans Qt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> '.'.join("test.py".split('.')[:-1])
    'test'
    >>>
    ou plus évolué, en utilisant les fonctions données par le module os.path:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> os.path.splitext("test.py")[0]
    'test'
    >>>
    - W

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Bricoler avec les chaînes de caractères est ce qu'on apprend normalement dans les tutos. bien avant de se lancer dans Qt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> '.'.join("test.py".split('.')[:-1])
    'test'
    >>>
    - W
    Je vous remercie de prendre de votre temps pour aider des personnes incompetentes. Il est vrai que je ne passe pas mes journees a programmer mais je pense quand meme me debrouiller.
    Mias je ne savais pas que ce forum etait reserve aux professionels.l

    Ceci dit j'ai bien compris votre explications , mais ce que je ne vous ai pas precise est que la fonction.selectedFiles() me renvoit "<PyQt4.QtCore.QStringList object at 0x0294E4F0" et selectedNameFilter me renvoit "All Files (*)".

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 426
    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 426
    Points : 37 008
    Points
    37 008
    Par défaut
    Citation Envoyé par laoren Voir le message
    Je vous remercie de prendre de votre temps pour aider des personnes incompetentes. Il est vrai que je ne passe pas mes journees a programmer mais je pense quand meme me debrouiller.
    Mias je ne savais pas que ce forum etait reserve aux professionels.l
    Un langage de programmation n'est qu'un langage: çà sert à projeter des idées que vous avez en tête pour qu'elles soient comprises par ceux qui vous liront. Écrire ses idées en français ou les écrire en Python demande un minimum d'apprentissage pour arriver à produire des séquences de phrases compréhensibles. Et le chemin est encore long avant d'espérer écrire des ouvrages à succès pour pouvoir en vivre.

    Les cours et tutos. proposés sur ce site sont là pour çà et ils s'adressent plus aux débutants étudiants ou lycéens. Ils vous permettent d'apprendre le minimum pour vous permettre de vous débrouiller.

    Citation Envoyé par laoren Voir le message
    Ceci dit j'ai bien compris votre explications , mais ce que je ne vous ai pas précisé est que la fonction.selectedFiles() me renvoit "<PyQt4.QtCore.QStringList object at 0x0294E4F0" et selectedNameFilter me renvoit "All Files (*)".
    Ca c'est une histoire qui mélange français et Python.
    L'avantage de Python est qu'on peut regarder ce qu'il fait lorsqu'on essaie de traduire ce mélange:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> from PyQt4.QtGui import QFileDialog,QApplication
    >>> app = QApplication([])
    >>> z = QFileDialog()
    >>> z.selectedFiles()
    ['F:/py_samples/dvp_samples/forum']
    pas de bol, çà sort autre chose.
    Et je ne vais pas me prendre le chou à essayer d'imaginer comment vous avez construit votre séquence d'instructions pour obtenir votre résultat...

    - W

Discussions similaires

  1. Afficher le contenu d'un fichier texte avec des balise PHP
    Par bastian06n dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2010, 11h30
  2. Ouvrir fichier selectionner avec TK
    Par Lauxeti dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 24/06/2010, 19h09
  3. [Batch] afficher le nom du dernier fichier crée
    Par vbcasimir dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 23/09/2009, 16h41
  4. Réponses: 3
    Dernier message: 20/05/2009, 10h12
  5. Réponses: 10
    Dernier message: 27/07/2006, 15h09

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