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 :

petit bug sur sur la fonction d'appel de tkinter


Sujet :

Python

  1. #1
    Membre habitué Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 492
    Points : 152
    Points
    152
    Par défaut petit bug sur sur la fonction d'appel de tkinter
    Bonjour

    Je ne parviens pas a voir comment détecter et prendre en charge le fait de cliquer sur le bouton annuler dans ce programme.
    Sur tout comment régler lemassage d'exception AttributeError dans l'appel
    line 54, in <module>
    if le_fichier.nom_fichier == None:
    AttributeError: 'recherche_fichier' object has no attribute 'nom_fichier'

    il semble que ce soit def explorateur_window(repertoireinit):

    La classe class recherche_fichier(): contient bien 3 variables dont la zone nom_fichier

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    # coding: utf-8  
    import threading
     
    import tkinter 
    from tkinter.filedialog import askopenfilename
    import os 
     
     
    '''Created on 21 aout 2017 
    @ 
    '''
    def explorateur_window(repertoireinit):
        """ Explorateur Windows    """
        root = tkinter.Tk()
     
        filename = tkinter.filedialog.askopenfilename(
            initialdir=repertoireinit,
            title="Choisir votre fichier",
            filetypes=(
                ("Tous type de fichier","*.*") ,
            )
        )
     
        return filename
    pass
     
    class recherche_fichier():
        nom_fichier :str
        repertoire : str
        nom_complet: str 
     
     
        def __init__(self,depart):
            '''
            Constructor
            '''
            nom_fichier = None
            repertoire = None
            nom_complet = None
     
            self.nom_complet = explorateur_window(depart) # Recherche via explorateur  nom_fichier_path_in
     
            if self.nom_complet != None :
                if os.path.isfile(self.nom_complet):
     
                # Ouverture du fichier destination
                    self.nom_fichier = os.path.basename(self.nom_complet) # Retourne le nom du fichier
                    #print(self.nom_fichier)
                    self.repertoire = os.path.dirname(self.nom_complet) # Retourne le répertoire complet
                    #print(self.repertoire  )
     
    if __name__ == '__main__':
        le_fichier = recherche_fichier(".//")
        if le_fichier.nom_fichier == None:
            print("Pas de fichier choisi" )
        else:
            print(le_fichier)
            print(le_fichier.repertoire)
            print(le_fichier.nom_fichier)

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

    Citation Envoyé par dedalios Voir le message
    Je ne parviens pas a voir comment détecter et prendre en charge le fait de cliquer sur le bouton annuler dans ce programme.
    Cliquer sur Annuler fera retourner une chaine vide à askopenfilename.

    Pour ce qui est de:
    Citation Envoyé par dedalios Voir le message
    line 54, in <module>
    if le_fichier.nom_fichier == None:
    AttributeError: 'recherche_fichier' object has no attribute 'nom_fichier'
    Dans votre code nom_fichier est une variable locale et non attribut d'instance.

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

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,
    Ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            self.nom_fichier = None
            self.repertoire = None
            self.nom_complet = None
    Là par contre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        nom_fichier :str
        repertoire : str
        nom_complet: str
    quelle est ton intention ?

  4. #4
    Membre habitué Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 492
    Points : 152
    Points
    152
    Par défaut correction-
    merci

    voici donc la correction (effectivement j'avais homis le paramètre self. sur les 3 variables de class dans l'iniitialisation)
    sur cette version j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from dataclasses import dataclass
    et je paramètre l'initilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @dataclass
    class recherche_fichier():
        nom_fichier :str = None
        repertoire : str = None
        nom_complet: str = None
        ...
    le premier code est un melange erronée


    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
    51
    52
    53
    54
    55
    # coding: utf-8  
    # coding: utf-8  
     
    from dataclasses import dataclass
    import tkinter 
    from tkinter.filedialog import askopenfilename
    import os 
     
     
    def explorateur_window(repertoireinit):
        """ Explorateur Windows    """
        root = tkinter.Tk()
     
        filename = tkinter.filedialog.askopenfilename(
            initialdir=repertoireinit,
            title="Choisir votre fichier",
            filetypes=(
                ("Tous type de fichier","*.*") ,
            )
        )
     
        return filename
    pass
    @dataclass
    class recherche_fichier():
        nom_fichier :str = None
        repertoire : str = None
        nom_complet: str = None
     
     
        def __init__(self,depart):
            '''
            Constructor
             '''
     
            self.nom_complet = explorateur_window(depart) # Recherche via explorateur  nom_fichier_path_in
     
            #print(self.nom_complet )
     
            if os.path.isfile(self.nom_complet):
     
            # Ouverture du fichier destination
                self.nom_fichier = os.path.basename(self.nom_complet) # Retourne le nom du fichier
                #print(self.nom_fichier)
                self.repertoire = os.path.dirname(self.nom_complet) # Retourne le répertoire complet
                #print(self.repertoire  )
     
    if __name__ == '__main__':
        le_fichier = recherche_fichier(".//")
        print(le_fichier)
        if le_fichier.nom_fichier == None:
            print("pas de fichier choisie")
        else:
            print(le_fichier.repertoire)
            print(le_fichier.nom_fichier)

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

Discussions similaires

  1. Rapport de bug sur les fonctions de XDebug
    Par lryo79 dans le forum Zend Studio
    Réponses: 8
    Dernier message: 14/06/2007, 16h35
  2. Petit bug sur filtre
    Par delcroixf dans le forum IHM
    Réponses: 3
    Dernier message: 20/03/2007, 23h21
  3. Petit bug sur des onglets
    Par pierre.coudert dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 18/01/2007, 12h28
  4. Réponses: 1
    Dernier message: 29/11/2005, 18h32
  5. [RegEx] Petit Bug sur Expression Régulière
    Par Delphy113 dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2005, 21h48

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