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 :

Afficher une la valeur de tkFileDialog dans un label [Python 2.X]


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 32
    Points : 27
    Points
    27
    Par défaut Afficher une la valeur de tkFileDialog dans un label
    Bonjour,

    voila je cherche je cherche mais je trouve tellement de chose que j'en suis perdu.
    Mon idée est simple pourtant. Je voudrais afficher la valeur d'une variable que j'ai définie via tkFileDialog dans un Label ou un Message peut import.
    Cela afin que l'utilisateur puisse vérifier visuellement ses choix avant de lancer une procédure plus global.

    j'y arrive si je ne met pas ma fenêtre principale TK dans une fonction mais ce n'est pas le but recherche.

    voici l'erreur que j'ai dans ce cas là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      File "J:\fenetre.py", line 13, in AdresseVariable
        nomTexte.set(Dossier)
    AttributeError: 'str' object has no attribute 'set'
    et 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
     
    # -*- coding: utf_8 -*-
    from Tkinter import *
    import tkFileDialog
    import os
     
    nomTexte=""
     
    def AdresseVariable():
        """ Définition de dossier a choisir  """
        Adresse = r"C:\Users\nh\Documents\FORMATION"
        SelectionAffaire = tkFileDialog.askdirectory(initialdir=Adresse,title=u"Sélèctionnez un dossier")
        Dossier = os.path.basename(SelectionAffaire)
        nomTexte.set(Dossier)
     
     
    def Fenetre():
        """ Déclaration de la fentre principale   """
        F_fenetre = Tk()
        F_fenetre.title("Message variable")
        F_fenetre.geometry ("300x100+175+175")
     
        nomTexte=StringVar()
        #nomTexte.get()
        Variable1 = Label(F_fenetre, text = "Valeur de la variable : ")
        Variable1.grid (row =0 , column =0)
     
        Variable2 = Label(F_fenetre, textvariable = nomTexte)
        Variable2.grid (row =1 , column =0)
     
        QUITTER= Button(F_fenetre,text="  QUITTER  ", command=F_fenetre.destroy).grid(row = 2, column=0)
        DOSSIER= Button(F_fenetre,text="  DOSSIER  ", command=AdresseVariable).grid(row= 2, column = 6 )
     
        F_fenetre.mainloop()
     
    Fenetre()
    Merci beaucoup pour le temps passer à lire et m'aider.

    a bientôt

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

    Comme vous débutez, vous n'avez pas de bonnes raisons d'utiliser Python2.

    Concernant votre problème, dans la fonction/callback AdresseVariable, la variable nomTexte sera celle déclarée ligne 7. Effectivement, c'est un "str" et cet objet là n'a pas de méthode .get.
    L'objet que vous voulez modifier est le StringVar déclaré ligne 23 et assigné à la variable locale nomTexte.


    Vous avez 2 solutions:
    1. supprimer la fonction Fenetre en gardant ses instructions dans le block principal du module. Ce faisant, nomTexte (le StringVar) sera variable globale et accessible lors de l'exécution de AdresseVariable.
    2. apprendre à jouer avec closure et lambda en étudiant le tuto. qui va bien (même s'il décrit un cas plus général que le votre).



    - W

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Je n'ai pas vraiment le choix pour le moment dans la version de python car , à moins que je me trompe.
    J'utilise un logiciel de cartographie qui fonctionne en python 2.7.
    Entant donnée que je fais appel aux bibliothèques de ce logiciel pour faire mon travail je suis resté sur la même version.
    Certainement pas peur d'une possible incompatibilité.

    Merci pour les infos. Ayant encore un peu de temps je vais aller travailler le tuto que tu me conseilles.
    Et si je n'y arrive pas je mettrai tout cela dans la boucle principal.

    Merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2016, 15h42
  2. [XL-2010] Afficher une autre valeur que #REF! dans une cellule
    Par Sore06 dans le forum Excel
    Réponses: 3
    Dernier message: 30/09/2014, 08h56
  3. [AC-2010] Comment afficher une autre valeur que la clé primaire dans une liste déroulante
    Par Nephi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/09/2010, 17h04
  4. Afficher une dropdownlist lors de modif dans une DataGrid
    Par MiJack dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/11/2004, 17h42
  5. Réponses: 2
    Dernier message: 23/11/2003, 18h44

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