Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lecture d'attributs d'une autre classe avec PySide

    5 juillet 2013 à 13:48:05

    Bonjour bonjour!
    Tout d'abord je tenais à préciser que je suis débutant avec Python ET Qt :p
    J'ai 2 questions dont je n'ai pas encore trouvé les réponses, et pour lesquelles j'espère que vous pourrez m'aider :)

    FYI : python 2.7.5, Pyside 1.1.2, OSX 10.8

    Première question : J'ai, dans une classe, une fonction qui permet de demander à l'utilisateur de choisir son fichier via une fenêtre de dialogue :

        def openFileDialog(self):
            import os
            path, _ = QtGui.QFileDialog.getOpenFileName(self, "Open File", os.getcwd())
            self.label.setText(path)

    J'ai adopté la syntaxe ci-dessus car j'ai trouvé ça par mes recherches, mais intuitivement j'aurais écrit :

    path = QtGui.QFileDialog.getOpenFileName(self, "Open File", os.getcwd())

    Quelqu'un pourrait m'expliquer pourquoi on écrit ça comme ça...?

    Deuxième question : Je souhaite lire et utiliser le "path" obtenu ci-dessus dans une autre fonction, elle même dans une autre classe, j'ai eu beau essayer et chercher, je n'ai pas trouvé comment m'y prendre, donc si vous avez un conseil/une idée... :(

    Merci d'avance à vous!


    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      5 juillet 2013 à 14:17:34

      "Quelqu'un pourrait m'expliquer pourquoi on écrit ça comme ça...?"

      Ton instinct est bon...

      D'ailleurs, il me semble que ça ne doit pas fonctionner.

      "Je souhaite lire et utiliser le "path" obtenu ci-dessus dans une autre fonction, elle même dans une autre classe, j'ai eu beau essayer et chercher, je n'ai pas trouvé comment m'y prendre, donc si vous avez un conseil/une idée..."

      Difficile sans voir la fonction, mais elle doit prendre un paramètre de type QString.

      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2013 à 14:43:21

        Et bien quand je teste avec ce que "me dit mon instinct", ça ne marche pas, alors que l'autre possibilité ça marche...
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          5 juillet 2013 à 14:52:48

          Ah oui tu utilises PySide, du coup avec PyQt ça doit fonctionner

          >>> from PyQt4 import QtGui
          >>> import sys, os
          >>> app = QtGui.QApplication(sys.argv)
          >>> window = QtGui.QMainWindow()
          >>> path = QtGui.QFileDialog.getOpenFileName(window, "Open File", os.getcwd())
          >>> path
          PyQt4.QtCore.QString(u'/home/fred1599/Desktop/facture 2013.pdf')
          

          PySide quand à lui renvoie un tuple de deux objets

          "Return type:

          (fileName, selectedFilter)"

          Voilà pourquoi tu as deux variables à "unpacker"



          • Partager sur Facebook
          • Partager sur Twitter
            5 juillet 2013 à 15:05:44

            Aaaah d'acc! Merci, ça répond déjà à ma première question! :)
            Pour ma deuxième question, en fait j'ai réalisé une fonction qui effectue un traitement sur un fichier, et je voudrais qu'elle se serve du fichier choisi par l'utilisateur, mais le contexte n'a pas trop, je pense, d'importance.
            Pour te donner une idée de ce que j'ai pu essayer, j'ai tenté de faire, dans ma 2ème fonction :

            print(path)

            ça n'a pas marché.
            Puis :

            print(testWindow.openFileDialog.path)

            mais ça ne marche toujours pas...

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              5 juillet 2013 à 15:40:55

              Le problème est que je ne vois pas ta fonction.

              Sans fonction un simple print(path) doit fonctionner, mais dans ton cas, si cela ne fonctionne pas dans la fonction, c'est qu'autre chose ne va pas, il faut la voir pour cela.

              Voici un simple code, j'ai pas testé, mais qui doit faire afficher le path de ton fichier

              import sys
              import os
              from PySide import QtGui
              
              app = QtGui.QApplication(sys.argv)
              window = QtGui.QMainWindow()
              path, _ = QtGui.QFileDialog.getOpenFileName(window, "Open File", os.getcwd())
              print(path)
              app.exec_()



              -
              Edité par Anonyme 5 juillet 2013 à 15:54:20

              • Partager sur Facebook
              • Partager sur Twitter

              Lecture d'attributs d'une autre classe avec PySide

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown