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 :

Classe :recupérer valeur d'une variable


Sujet :

Tkinter Python

Vue hybride

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut Classe :recupérer valeur d'une variable
    Bonsoir ,

    j'ai une classe "Interfacecpt" qui m'ouvre une interface graphique (Tkinter) et
    dans laquelle je selectionne dans une listbox le nom d'un fichier.

    cette classe fonctionne bien, ce que je n'arrive pas à faire c'est:
    quand je ferme cette fenêtre (pour le moment avec la croix) je ne peux pas récupérer le nom du fichier à l'extérieur de cette classe dans une variable f
    qui me servira dans le reste du programme.


    Merci par avance de vos réponses

    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
    67
    68
    69
    70
    71
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    import Tkinter
    import os
     
     
    class InerfaceCpt (Tkinter.Tk):
        """ Selectionne et ouvre Fime"""
        def __init__ (self,parent):
     
            Tkinter.Tk. __init__ (self,parent)
            self.parent=parent
     
            self.grid()
            self.geometry('450x250')
            #listbox et scrollbar
            self.listb=Tkinter.Listbox(self)
            self.scrb=Tkinter.Scrollbar(self)
            self.scrb.config(command=self.listb.yview)
            self.listb.config(yscrollcommand=self.scrb.set)
            self.listb.grid(column=1, row=2, sticky='EW')
            self.scrb.grid(column=1, row=2, sticky='EWNS')
            self.listb.bind('<ButtonRelease-1>',self.clic)
            #RadioButton
            self.choixrep=Tkinter.StringVar()
            self.radbutton1=Tkinter.Radiobutton(self,text='Hiver',
                            variable=self.choixrep, value='Hok',command=self.ClicRadio)
            self.radbutton2=Tkinter.Radiobutton(self,text='Eté',
                            variable=self.choixrep, value='Eok',command=self.ClicRadio)
            self.radbutton1.grid(column=1,row=3,sticky='ES')
            self.radbutton2.grid(column=1,row=3,sticky='WS')
            #Button
            button=Tkinter.Button(self, text=u'Cliquer moi', command=self.OnButtonClick )
            button.grid(column=1, row=1)
     
        def OnButtonClick(self):
            pass
     
        def ClicRadio(self):
            self.listb.delete(0,Tkinter.END)#vide la liste
            if self.choixrep.get()=='Hok':
                vfiche=os.listdir('c:\Hiver')
     
            if self.choixrep.get()=='Eok':
                vfiche=os.listdir('c:\Eté')
            idx=0
            i=0
            valfiche=[elem for elem in vfiche if elem[:3]=='Lis'or  elem[:3]=='LIS' or elem[:3]=='lis']#cherche les fichiers commençant par Lis,lis,LIS
            valfiche.sort()
            for elem in valfiche:
                self.listb.insert(idx,elem)
                idx+=1
     
        def clic(self,nomfichier):
            i=self.listb.curselection()
            nomfichier= self.listb.get(i)
            print nomfichier
            return nomfichier
     
     
     
     
    if __name__ =='__main__':
        app=InerfaceCpt(None)
        app.title('**********************')
    InerfaceCpt(None).mainloop()
     
    fich=InerfaceCpt(None)
    f= fich.clic()
    ########## SUITE DU PROGRAMME#################

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    C'est normal, lorsque tu essayes de récupérer ton fichier ta classe InerfaceCpt est détruite. Je pense que le mieux est de créer une deuxième classe pour ton application principale qui instancira ta fenêtre Tk. Le problème est que (sauf erreur de ma part) l'évènement "quitter" n'est pas prévu dans Tkinter, il y a bien <Destroy> mais apparemment l'objet est détruit avant l'évènement. Il faut donc réimplémenter le "quitter croix rouge". Ca c'est prévu avec 'protocol'.
    Voici un exemple avec une fenêtre contenant un Entry dont la valeur est récupéré dans la classe principale à la fermeture de la 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
     
    #!/usr/bin/python
    # -*- coding: iso-8859-1 -*-
     
    import Tkinter as tk
    import os
     
     
    class FenetreTk (tk.Tk):
        def __init__ (self,parent):
            tk.Tk. __init__ (self, None)
            self.parent=parent
            self.protocol("WM_DELETE_WINDOW", self.detruire)
            self.entry = tk.Entry(self)
            self.entry.pack()
        def detruire(self):
            self.parent.tkQuit()  
            self.destroy()
     
    class Principale:
        def __init__(self):
            self.appTk=FenetreTk(self)
            self.appTk.mainloop()
     
        def tkQuit(self):
            print self.appTk.entry.get()
     
     
     
    Principale()

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Par défaut résolu
    Bonsoir

    Merci Nyko77 pour ta réponse elle correspond à ce que je voulais.



    A bientôt pour une nouvelle question.........

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

Discussions similaires

  1. Comment recupérer la valeur d'une variable dans l'URL
    Par pierrot10 dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 24/06/2008, 02h56
  2. Réponses: 6
    Dernier message: 31/05/2007, 18h10
  3. Réponses: 7
    Dernier message: 13/04/2007, 17h16
  4. [VB]comment recupérer la valeur d'une variable ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/02/2006, 14h35
  5. Réponses: 3
    Dernier message: 02/11/2005, 18h03

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