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 :

Problème d'ouverture d'un fichier avec QFileDialog.getOpenFileName


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Par défaut Problème d'ouverture d'un fichier avec QFileDialog.getOpenFileName
    Bonjour,
    Je voudrais ouvrir un fichier .stl mais j'ai un problème au niveau de mon code (Python a cessé de fonctionner).
    Pouvez-vous m'aider svp?
    Voici mon code:
    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
    37
    38
    39
    40
    41
    42
    from PyQt5 import QtCore, QtGui, QtWidgets
     
    class Ui_Form(object):
        def setupUi(self, Form):
            Form.setObjectName("Form")
            Form.resize(252, 600)
            self.import_btn = QtWidgets.QCommandLinkButton(Form)
            self.import_btn.setGeometry(QtCore.QRect(10, 60, 231, 41))
            self.import_btn.setLayoutDirection(QtCore.Qt.LeftToRight)
            self.import_btn.setStyleSheet("")
            icon1 = QtGui.QIcon()
            icon1.addPixmap(QtGui.QPixmap("Import_Icon_48.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
            self.import_btn.setIcon(icon1)
            self.import_btn.setObjectName("import_btn")
     
            self.retranslateUi(Form)
            QtCore.QMetaObject.connectSlotsByName(Form)
     
            #Action du bouton import
            self.import_btn.clicked.connect(self.SingleBrowse)
     
        def retranslateUi(self, Form):
            _translate = QtCore.QCoreApplication.translate
            Form.setWindowTitle(_translate("Form", "Form"))
            self.import_btn.setText(_translate("Form", "IMPORT"))
     
        # Fonction pour download STL
        def SingleBrowse(self):
            filePath = QFileDialog.getOpenFileName(self, 
                                                           'Single File',
                                                           "C://",
                                                          '*.stl')
            fileHandle = open(filePath, 'r')
     
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        Form = QtWidgets.QWidget()
        ui = Ui_Form()
        ui.setupUi(Form)
        Form.show()
        sys.exit(app.exec_())

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,

    Citation Envoyé par zsoufianz Voir le message
    Pouvez-vous m'aider svp?
    Il faut peut être commencer par lui faire afficher le nom du fichier puis s'assurer que open(filePath, 'r') pour ce fichier là, fonctionne en dehors de votre programme (à la console Python par exemple).

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

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Par défaut
    Merci pour la réponse.
    Je l'ai afficher mais je reçois l même erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        def SingleBrowse(self):
            filePath = QGui.QFileDialog.getOpenFileName(self, 
                                                           'Single File',
                                                           "C://",
                                                          '*.stl')
            print('filePath',filePath, '\n')
     
            fileHandle = open(filePath, 'r')

  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,

    Il se trouve que sous PyQt5, cette méthode getOpenFileName a été renommée à partir de getOpenFileNameAndFilter, et renvoie donc, non le nom sélectionné, mais un tuple formé du nom de fichier et du filtre utilisé.

    C'est indiqué dans la doc ici: http://pyqt.sourceforge.net/Docs/PyQ...ml#qfiledialog

    Donc, si je sélectionne le fichier "toto.jpg", la méthode me renvoie le tuple: ('chemin\toto.jpg', 'JPEG (*.jpg *.jpeg)'). Il suffira de trouver le nom de fichier avec filePath[0].

    Et si je fais "annuler" au lieu de sélectionner un nom de fichier, la méthode renvoie ('', '').

    Un conseil pour la suite: un simple affichage de filePath aurait permis de trouver ça.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Un conseil pour la suite: un simple affichage de filePath aurait permis de trouver ça.
    "print" c'est bien mais encore faut-il regarder ce que çà affiche... de même que les messages d'erreur plutôt explicites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> s = ('chemin\toto.jpg', 'JPEG (*.jpg *.jpeg)')
    >>> open(s)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: invalid file: ('chemin\toto.jpg', 'JPEG (*.jpg *.jpeg)')
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Problème d'ouverture d'un fichier
    Par Matt2094 dans le forum Langage
    Réponses: 14
    Dernier message: 29/03/2006, 14h11
  2. problème d'ouverture d'un fichier EXCEL!!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2005, 13h37
  3. Ouverture d'un fichier avec son nom
    Par bonjour69 dans le forum C
    Réponses: 23
    Dernier message: 15/10/2005, 19h36
  4. Problème d'E.S. sur fichier avec open
    Par Bubonik software dans le forum C
    Réponses: 6
    Dernier message: 04/02/2004, 19h42

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