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 :

retenir une variable cree avec Tkinter


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut retenir une variable cree avec Tkinter
    Bonjour,

    J'utilise un module Tkinter dans mon programme python pour afficher une fenetre, entrer des donnees dans des champs au clavier et pouvoir reutiliser ces donnees dans le programme qui suit. Mon probleme, c'est que les variables creees semblent etre ignorees apres la ligne " fen1.mainloop() ". Voyez plutot mon debut de programme:

    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
    60
    61
    62
    63
    64
    65
    66
     
    import math,sys
    from matplotlib import pylab,pyplot
    from pylab import *
    from Tkinter import *
     
    def get_value1(event):
    	etoile=str(e1.get())
    	print "etoile: ", etoile
    def get_value2(event):
    	jour=e2.get()
    	print "jour: ", jour
    def get_value3(event):
    	mois=str(e3.get())
    	print "mois: ", mois
    def get_value4(event):
    	annee=e4.get()
    	print "annee: ", annee
    def get_value5(event):
    	fichier=str(e5.get())
    	print "fichier: ", fichier
     
    fen1 = Tk()
     
    e1=StringVar()
    e2=StringVar()
    e3=StringVar()
    e4=StringVar()
    e5=StringVar()
     
    txt1=Label(fen1, text='etoile')
    txt2=Label(fen1, text='jour')
    txt3=Label(fen1, text='mois')
    txt4=Label(fen1, text='annee')
    txt5=Label(fen1, text='fichier')
    ent1=Entry(fen1,textvariable=e1)
    ent2=Entry(fen1,textvariable=e2)
    ent3=Entry(fen1,textvariable=e3)
    ent4=Entry(fen1,textvariable=e4)
    ent5=Entry(fen1,textvariable=e5)
    txt1.grid(row=0)
    txt2.grid(row=1)
    txt3.grid(row=2)
    txt4.grid(row=3)
    txt5.grid(row=4)
    ent1.grid(row=0,column=1)
    ent2.grid(row=1,column=1)
    ent3.grid(row=2,column=1)
    ent4.grid(row=3,column=1)
    ent5.grid(row=4,column=1)
     
    bou1 = Button(fen1, text='Quitter', command = fen1.destroy)
    bou1.grid()
     
     
     
    ent1.bind("<Return>",get_value1)
    ent2.bind("<Return>",get_value2)
    ent3.bind("<Return>",get_value3)
    ent4.bind("<Return>",get_value4)
    ent5.bind("<Return>",get_value5)
     
    fen1.mainloop()
     
    print fichier
    ofile=open(fichier,'w')
    La compilation indique une erreur a la ligne "print fichier" tout en bas en disant que la variable "fichier" n'existe pas alors que quand je tape mes valeurs dans les 5 lignes de la fenetre, le programme imprime bien ces 5 variables dont la variable "fichier".

    Comment puis-je regler ca svp?

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 474
    Points : 9 274
    Points
    9 274
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est normal: la variable fichier a été crée à l'intérieur d'une fonction (get_value5()). Elle est donc locale à cette fonction et détruite à sa sortie.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Expert confirmé 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
    Points : 4 005
    Points
    4 005
    Par défaut
    fichier est une variable locale de get_value5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def get_value5(event):
            global fichier
    	fichier=str(e5.get())
    	print "fichier: ", fichier
    (Edit : Zut, tyrtamos est plus rapide...)
    Merci d'utiliser le forum pour les questions techniques.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je vois. Comment faire alors pour généraliser cette variable?

  5. #5
    Invité
    Invité(e)
    Par défaut
    ah pardon je n'avais pas vu la solution dans le message précédent :-) Je vais essayer tt de suite...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok ça marche! merci les gars :-P

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

Discussions similaires

  1. Utilisé Tix dans une fenêtre crée avec Tkinter
    Par Jiyuu dans le forum Tkinter
    Réponses: 4
    Dernier message: 07/02/2008, 17h45
  2. Réponses: 2
    Dernier message: 06/11/2007, 13h23
  3. Récupérer une variable générée avec php
    Par nikitou dans le forum Flash
    Réponses: 2
    Dernier message: 30/07/2007, 15h41
  4. [VB6] Comment formatter une variable heure avec MS
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/10/2006, 13h20
  5. [PHP-JS] PHP + VBS, reprendre une variable php avec vbs
    Par el_butcho dans le forum Langage
    Réponses: 6
    Dernier message: 25/08/2006, 17h52

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