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

Python Discussion :

Global name is not define?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Par défaut Global name is not define?
    Bonjour à tous,
    Voila j'ai une question que je n'arrive pas à résoudre, je m'explique j'ai un petit programme qui demande à l'utilisateur de saisir dans un lineEdit le chemin d'un dossier par exemple : c:/Design

    J'ai donc créer une fonction de ce type:

    def Folder(self):
    Dossier = self.lineEdit.text()
    print Dossier

    Mon souci c'est que je voudrais récupérer le contenu de la chaine de caractère Dossier dans une autre fonction et je n'y arrive pas j'ai toujours l'erreur de complilation global name is not define!

    Merci de votre aide je suis débutant en python

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def Folder(self):
        Dossier = self.lineEdit.text()
    Ici Dossier est un objet local de Folder. Il n'est pas visible en dehors de la fonction. Utilisez self.
    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
    class Foo(object):
        def folder(self):
            self.Dossier = 'dossier'
     
        def folder1(self):
            Dossier= 'Dossier'
     
        def get_dossier(self):
            print(self.Dossier)
     
        def get_dossier1(self):
            print(Dossier)
     
    f = Foo()
    f.folder()
    f.get_dossier()
    f.folder1()
    f.get_dossier1()
    Output
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dossier
    Traceback (most recent call last):
      File "testtop.py", line 18, in <module>
        f.get_dossier1()
      File "testtop.py", line 12, in get_dossier1
        print(Dossier)
    NameError: global name 'Dossier' is not defined
    @+

    PyQT sans les bases ? Bon courage.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Par défaut
    Tu m'excuseras mais je ne vois pas ou tu récupères la chaine saisie par l'utilisateur dans ton code!

    car self.lineEdit.text() me récupère bien ce qu'inscrit l'utilisateur dans le champs et me l'affiche correctement dans la console Python.

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    C'est une question de visibilité*, pas sur PyQT.
    Merci de relire la réponse ou de reformuler la question.

    @+

    *
    Mon souci c'est que je voudrais récupérer le contenu de la chaine de caractère Dossier dans une autre fonction et je n'y arrive pas j'ai toujours l'erreur de complilation global name is not define!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Par défaut
    Oui j'ai bien compris, que ma variable n'était visible que dans la fonction ma question était comment résoudre ce problème.

    Voici mon code de ma fenetre:

    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
    43
    44
    class Ui_Dialog1(object):
     
        def setupUi(self, Dialog1):
            Dialog1.setObjectName(_fromUtf8("Dialog1"))
            Dialog1.resize(474, 337)
            self.label = QtGui.QLabel(Dialog1)
            self.label.setGeometry(QtCore.QRect(50, 60, 121, 16))
            self.label.setObjectName(_fromUtf8("label"))
            self.lineEdit = QtGui.QLineEdit(Dialog1)
            self.lineEdit.setGeometry(QtCore.QRect(50, 80, 113, 20))
            self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
            self.pushButton = QtGui.QPushButton(Dialog1)
            self.pushButton.setGeometry(QtCore.QRect(190, 80, 75, 23))
            self.pushButton.setObjectName(_fromUtf8("pushButton"))
     
            self.retranslateUi(Dialog1)
            QtCore.QMetaObject.connectSlotsByName(Dialog1)
            QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("clicked()"), self.Folder)
     
     
        def retranslateUi(self, Dialog1):
            Dialog1.setWindowTitle(QtGui.QApplication.translate("Dialog1", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
            self.label.setText(QtGui.QApplication.translate("Dialog1", "Please enter the folder : ", None, QtGui.QApplication.UnicodeUTF8))
            self.pushButton.setText(QtGui.QApplication.translate("Dialog1", "Ok", None, QtGui.QApplication.UnicodeUTF8))
     
     
        def Folder(self):
             Dossier = self.lineEdit.text()
             print Dossier
     
        def WriteFileI1(self):
             fichier = open("Chemin saisie par l'utilisateur","a")
             fichier.write("Coucou")
     
     
     
    if __name__ == "__main__":
        import sys
        app = QtGui.QApplication(sys.argv)
        Dialog1 = QtGui.QDialog()
        ui = Ui_Dialog1()
        ui.setupUi(Dialog1)
        Dialog1.show()
        sys.exit(app.exec_())
    Ma question est simple je veux récupérer le chemin saisie par l'utilisateur dans le lineEdit pour ensuite le ré-utiliser lorsque j'appelle ma fonction permettant d'écrire dans le fichier et ainsi préciser le répertoire ou sera enregistré le fichier.

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Re,

    C'est bien ce que je vous présente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        def Folder(self):
            self.Dossier = self.lineEdit.text()
     
        def WriteFileI1(self):
            fichier = open(self.Dossier, "a")
            fichier.write("Coucou")
            fichier.close()
    note : Pensez aux balises code (# en haut) pour l'indentation svp.

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

Discussions similaires

  1. [Python 2.X] Probleme de Global name not defined
    Par Sh0rtY dans le forum Général Python
    Réponses: 1
    Dernier message: 03/07/2014, 10h47
  2. [noob] global name not defined
    Par tiresias54 dans le forum Général Python
    Réponses: 3
    Dernier message: 15/10/2013, 10h43
  3. NameError: global name 'thread' is not defined
    Par Balbuzard dans le forum Général Python
    Réponses: 6
    Dernier message: 15/07/2009, 06h52
  4. références croisées objets NameError: global name is not defined
    Par loicmidy dans le forum Général Python
    Réponses: 2
    Dernier message: 13/06/2009, 15h41
  5. NameError: global name 'entr2' is not defined
    Par noquioz dans le forum Tkinter
    Réponses: 18
    Dernier message: 24/11/2008, 11h20

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