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

Tkinter Python Discussion :

Problème lors de la récupération d'un chemin [Python 2.X]


Sujet :

Tkinter Python

  1. #1
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut Problème lors de la récupération d'un chemin
    Bonjour,

    Voilà j'ai un soucis sur mon code ci dessous.

    Mon code est assez simple, je dois indiquer un répertoire de travail dans lequel un script va renomer des fichier .avi avec le nom du répertoire dans lequel le .avi se trouve.

    Le script en lui même fonctionne très bien en l'état (faut encore que je le perfectionne).

    Le soucis est apparu lorsque j'ai voulu faire une petite interface graphique à l'aide de Tkinter.

    Voici le 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
    43
    44
    45
    46
    47
    48
    49
    50
     
    from Tkinter import *
    import os
    import shutil
    import tkFileDialog
     
    def Rename():
        for path, dirs, files in os.walk(WorkDir):
            for Directorie_Name in dirs:       
                UpperCase_File_Name = Directorie_Name
                print Directorie_Name
                pathfile = os.path.join(path, Directorie_Name)
                Old_Name_File= os.listdir(pathfile)[0]
     
                pathOldFile = os.path.join(pathfile, Old_Name_File)
                pathNewFile = os.path.join(pathfile, UpperCase_File_Name)
                os.rename (pathOldFile, pathNewFile+'.avi')
     
    def ChooseWorkDirectory():
        WorkDir = tkFileDialog.askdirectory(parent=root, initialdir="/", title="Please select a work directory")
        Ent.delete(0,END)
        Ent.insert(END, WorkDir)
        print WorkDir
     
    root = Tk()
    root.geometry("600x100+10+10")
    root.title("Rename Movie File v1.0")
     
    Frame_1 = Frame(root, width=400, height=100)
    Frame_1.pack(side='top')
     
    Folder = Label(Frame_1, text="Work Directory")
    Folder.grid(row=0,column=0)
    Ent = Entry(Frame_1, width=40)
    Ent.grid(row=0,column=1, pady=10)
    Select = Button(Frame_1, text='SELECT', width=10, height=1, command = ChooseWorkDirectory)
    Select.grid(row=0, column=2)
     
    Footer = Frame(root, width=400, height=100)
    Footer.pack_propagate(False)
    Footer.pack(side="bottom", pady=5)
     
    Exit = Button(Footer, text='-EXIT-', width=10, height=1, command = root.destroy)
    Exit.pack(side = 'left', padx=5, pady=5)
     
    Apply = Button(Footer, text='-APPLY-', width=10, height=1, command = Rename)
    Apply.pack(side = 'right', padx=5, pady=5)
     
     
    root.mainloop()
    et voici l'erreur qu'il me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
        return self.func(*args)
      File "V:\JDOWNLOADER\Rename_Movie_File_1.0.py", line 8, in Rename
        for path, dirs, files in os.walk(WorkDir):
    NameError: global name 'WorkDir' is not defined
    De ce que j'ai compris il ne connait pas WorkDir. Pourtant je définis bien sa valeur dans la fonction ChooseWorkDirectory(). Est ce que la valeur de cette variable est effacée une fois que j'appel la fonction Rename() ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par nekcorp Voir le message
    De ce que j'ai compris il ne connait pas WorkDir. Pourtant je définis bien sa valeur dans la fonction ChooseWorkDirectory(). Est ce que la valeur de cette variable est effacée une fois que j'appel la fonction Rename() ?
    Bonsoir,
    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
    >>> def fct1():
    	coucou = 12
     
     
    >>> def fct2():
    	print(coucou)
     
     
    >>> fct1()
    >>> fct2()
    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        fct2()
      File "<pyshell#5>", line 2, in fct2
        print(coucou)
    NameError: name 'coucou' is not defined
    >>>
    Une variable déclarée dans une fonction n'est pas visible en dehors.
    Pour cela il faudrait la déclarée avec le mot clef "global".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> def fct1():
    	global coucou
    	coucou = 12
     
     
    >>> fct1()
    >>> fct2()
    12
    >>>
    Clodion

  3. #3
    Membre averti Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    Citation Envoyé par Clodion Voir le message
    Bonsoir,
    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
    >>> def fct1():
    	coucou = 12
     
     
    >>> def fct2():
    	print(coucou)
     
     
    >>> fct1()
    >>> fct2()
    Traceback (most recent call last):
      File "<pyshell#7>", line 1, in <module>
        fct2()
      File "<pyshell#5>", line 2, in fct2
        print(coucou)
    NameError: name 'coucou' is not defined
    >>>
    Une variable déclarée dans une fonction n'est pas visible en dehors.
    Pour cela il faudrait la déclarée avec le mot clef "global".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> def fct1():
    	global coucou
    	coucou = 12
     
     
    >>> fct1()
    >>> fct2()
    12
    >>>
    Clodion
    Merci pour ta réponse. l'utilisation de global a résolu mon problème

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

Discussions similaires

  1. [ADO/ORACLE/C++] Problème lors de la récupération de la liste des Vues
    Par dabouta dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 15/12/2008, 17h25
  2. [MySQL] problème lors de la récupération des données à modifier mysql
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/05/2008, 01h36
  3. Réponses: 4
    Dernier message: 29/06/2007, 11h17
  4. Réponses: 2
    Dernier message: 09/03/2006, 15h24
  5. [jsp]problème lors de la récupération de paramètre, textarea
    Par money mark dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/06/2005, 22h08

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